Modul-Entwicklung
Theme Block erzeugt falsche ID
Eingetragen von jan.s (44) am 07.03.2011 - 10:54 Uhr inHallo zusammen,
ich erstelle in einem eigenen Modul mit hook_blockein paar Blöcke. Wenn ich diese nun direkt in ein Template einfügen möchte, mache ich das so:
<?php
$block = (object)module_invoke('sidebar', 'block', 'view', 0);
print theme('block', $block);
?>Jetzt ist es aber so, dass jeder Block die ID "block--" bekommt. Das liegt daran, dass $block->module und $block->delta in der Block-Variable im Template nicht vorhanden sind. Es gibt nur $block->content und $block->subject.
Weiß jemand, wieso nicht alle benötigten Eigenschaften erzeugt werden? Muss ich die manuell angeben in hook_block? Ich dachte eigentlich das macht ctools_block_content_type_render schon automatisch, denn die benötigten Informationen sind ja eigentlich schon vorhanden.
Viele Grüße
Jan
[gelöst] Funktionsaufruf nach Submit
Eingetragen von crazybread (4) am 05.03.2011 - 00:00 Uhr inGuten Abend zusammen,
ich google mich schon eine Weile durchs Netz, habe mich auch schon hier im Forum umgesehen und finde keine Lösung, darum mache ich ein neues Thema auf, in der Hoffnung, mir werde geholfen!
Ich schreibe an einem Formular, welches (später) mehrere Eingabefelder für Geburtsjahr, Geschlecht, Hobbies usw haben wird. Nach Drücken des Submit-Buttons werden diese Daten mit allen registrierten Usern verglichen und passende ausgegeben, also sozusagen eine erweiterte Usersuche. HIer einmal der Code:
<?php
// $Id$
/**
* Baut das Menu neu auf (nur während der Entwicklungsphase)
*/
function usersuche_init(){
menu_rebuild();
}
/**
* Erstellt Menüeinträge
*/
function usersuche_menu() {
$items['usersuche'] = array(
'title' => 'UserSuche',
'page callback' => 'usersuche_formular',
'access arguments' => array('access user profiles'),
'type' => MENU_NORMAL_ITEM);
return $items;
} // END usersuche_menu
?>
<?php
/**
* Gibt das Formular aus
*/
function usersuche_formular(){
$uebergabe = t('Suche nach Benutzern');
$uebergabe .= drupal_get_form('formular');
return $uebergabe;
} // END usersuche_formular()
?>
<?php
/**
* Hier wird das Formular angelegt
*/
function formular()
{
$form = array();
$form['Vorname'] = array
(
'#title' => t('Vorname'),
'#type' => 'textfield',
'#description' => t('Hier gib bitte den Vornamen ein')
);
$form['submit'] = array
(
'#type' => 'submit',
'#value' => t('Senden')
);
return $form;
} // END formular()
?>
<?php
/**
* Das kommt jetzt nach erfolgreicher Validierung
*/
function usersuche_submit($form, &$form_state)
{
return 'usersuche_ergebnis';
} // END usersuche_submit()
?>
<?php
/**
* Generiert die Ergebnis - Seite
* @param op the operation from the URL
* @param delta offset
* @returns block HTML
*/
function usersuche_ergebnis() {
//Inhalt der Seite, die nachher zurückgegeben wird
$page_content = '';
$query = "SELECT uid, name FROM {users}";
$queryResult = db_query($query);
while ($links = db_fetch_object($queryResult)) {
$page_content .= l($links->name, 'user/'.$links->uid) . '<br />';
}
return $page_content;
} // END usersuche_ergebnis()
?>Wie man sieht, sollte nach erfolgreichem Drücken des Submit-Buttons die Funktion "usersuche_ergebnis" aufgerufen werden... tuts aber nicht.
Was mache ich falsch? Ist meine Vorgehendweise eventuell nicht richtig und man macht so etwas auf eine andere Art?
Vielen Dank schonmal!
D7 Formularfeld ändern - Wie gehts ?
Eingetragen von Micha1111 (290) am 04.03.2011 - 16:21 Uhr inIch versuche mit hook_form_alter() Änderungen an einem ganz normalen Formularfeld durchzuführen.
Ich habe einen Inhaltstypen "Modultest" über das normale Interface erstellt und diesem Inhaltstypen das Textfeld "Modultextfeld" hinzugefügt. Der maschinenlesbare Name heisst also "field_modultextfeld".
Mit hook_form_alter() wollte ich nun diesem Feld per Modul eine Beschreibung hinzufügen und zwar mit foldendem Code:
<?php
function zumschluss_form_alter(&$form, &$form_state, $form_id) {
// drupal_set_message("Form ID is : " . $form_id);
//drupal_set_message('<pre>'. print_r($form, 1) .'</pre>');
switch ($form_id) {
case 'modultest_node_form':
drupal_set_message('<pre>'. print_r($form, 1) .'</pre>'); // damit das array zum Feld ausgegeben wird
$form['field_modultextfeld'] = array(
'#type' => 'textfield',
'#title' => t('Nur ein Testfeld'),
'#description' => t('Die Testbeschreibung'),
'#prefix' => '<div id="testfield">',
'#suffix' => '</div>',
);
break;
default:
break;
}
}Dieser Code führt soweit ich das verstehe dazu, dass das automatisch generierte Formularfeld komplett ersetzt wird.
Wenn ich dann aber einen neuen Inhalt erstelle, gibt es die angehängten Fehlermeldungen. Der Node wird gespeichert, aber das Feld bleibt leer.
Wenn ich das richtig verstehe, könnte ich auch folgenden Code verwenden, um die Beschreibung des Formularfeldes gezielt anzusprechen:
$form['field_modultextfeld']['#description] = t('Die Testbeschreibung');Das geht aber nicht, weil offenbar, die array-Struktur nicht stimmt.
Erst dieser Code funktioniert:
$form['field_modultextfeld']['und'][0]['value']['#description'] = t('Die Testbeschreibung');Warum ist das so ?
Ist das irgendwo beschrieben ?
Oder, was mache ich falsch ?
Das Array (ist so lang, dass ich es auf drei Bilddateien verteilen musste) und die Fhelermeldung habe ich angehängt.
Schon mal Danke im voraus !
hook_form_alter ODER field API ?
Eingetragen von drupalcentersven (44) am 01.03.2011 - 17:08 Uhr inIn Drupal 7 gibt es ja jetzt die Field API, die sich um das Abspeichern, etc von custom fields kümmert. Bis jetzt habe ich mit der Form API Formfelder eingefügt und dann von Hand gespeichert.
Hat jemand ein gutes Beispiel, wie man ein custom field mit der Field API in ein vorhandenes Formular einbindet?
- Anmelden oder Registrieren um Kommentare zu schreiben
- Weiterlesen
[gelöst]Node via PHP erstellen Umlaut Problem
Eingetragen von Sawascwoolf (125) am 27.02.2011 - 23:05 Uhr inHi Leute,
Ich bin gerade dabei einige 100 Nodes via xml zu importieren. Das funktioniert auch recht gut (Das ganze mache ich mit rules)
Jetzt habe ich das Problem, das in den CCK-Felder und sowohl als auch in den Titeln Umlaute vorkommen können.
<?php
$node = new stdClass();
$node->title =$value["HallenName"];
$node->type = 'hallen';
$node->field_sis_id[0]["value"]= $value["Halle"];
$node->field_strasse[0]["value"]=htmlentities($value["HallenStrasse"]);
$node->field_stadt[0]["value"]=htmlentities($value["HallenOrt"]);
$node->uid = 1;
?>wenn ich nun auch beim titel htmlentities verwende, werden beim titel die Umlaute nicht angezeigt sondern die html codes.
Wenn ich jedoch htmlentities nicht verwende werden die Titel abgeschnitten und nicht komplett gespeichert.
Was kann ich da noch machen?
MfG
Sawascwoolf
[hook_form_alter()]CKK Felder als Radio Buttons in Webform anzeigen
Eingetragen von monsi (200) am 23.02.2011 - 23:23 Uhr inHi Leute,
ich mach` mal ein neues Thema auf - auch wenn es quasi zusätzlich zu einem alten Thema von mir ist. Falls das ein Problem sein sollte - bitte einfach löschen :-)
===============
In dem alten Thema ging es darum per $_GET Variable bestimmte CCK Felder eines Nodes in eine Webform zu bringen.
Hier der Link: http://www.drupalcenter.de/node/33297
PHP Snippets?
Eingetragen von greenpower (6) am 23.02.2011 - 21:25 Uhr inHallo, ich würde gerne ein Formular erstellen das Automatisch den Nodetitle der vorhergehenden Seite setzt. Im Modul Webform habe ich entsprechende "Tokens" gefunden um Daten aus der URL auszulesen. Nur schaffe ich es nicht so einen Link auf der Nodeseite zu setzen ( der den Titel der Node in die URL/Link setzt). Und da kamen mir PHP Snippets in den Sinn. Nur leider ist für mich Drupal zum größsten Teil noch Böhmische Dörfer und PHP rocketsciene. Kann mir da jemand unter die Arme greifen?
der link müsste in etwa so aussehen:
<a href="/node/10?title=<?php print $title; ?>">Fill out form</a>
über eine Antwort würde ich mich sehr freuen.
greenpower
Deutsche Sprache durch Installationsprofil einzig im Installationsvorgang
Eingetragen von Peter Majmesku (656) am 21.02.2011 - 09:22 Uhr inHi,
ich habe die de.po Datei aus dem Drupalcenter-Installationsprofil nach profiles/installationsprofil/translations/ kopiert. Zudem habe ich in meine installationsprofil.profile Datei innerhalb der Funktion installationsprofil_profile_tasks();
<?php
global $install_locale;
if ($install_locale == 'de') {
variable_set('configurable_timezones', '1');
variable_set('date_default_timezone', '3600');
variable_set('date_first_day', '1');
variable_set('date_format_long', 'l, j. F Y - G:i');
variable_set('date_format_medium', 'j. F Y - G:i');
variable_set('date_format_short', 'd.m.Y - H:i');
}
?>eingefügt. Der Installationsvorgang ist dann in deutscher Sprache. Auch sind die Editiert-Tabs "Anzeigen" und "Bearbeiten" vorhanden. Der Rest ist aber Englisch. Was habe ich falsch gemacht?
- Anmelden oder Registrieren um Kommentare zu schreiben
Node Id bzw. nid herausfinden
Eingetragen von drupalcentersven (44) am 18.02.2011 - 23:34 Uhr inIch stehe grade auf dem Schlauch.
Ich habe mit hook_form_FORM_ID_alter mehrere Felder hinzugefügt. Die Inhalte dieser Felder speichere ich in einer extra Tabelle. So weit so gut.

Neue Kommentare
vor 3 Wochen 4 Tagen
vor 3 Wochen 5 Tagen
vor 3 Wochen 5 Tagen
vor 3 Wochen 5 Tagen
vor 3 Wochen 5 Tagen
vor 3 Wochen 6 Tagen
vor 3 Wochen 6 Tagen
vor 4 Wochen 14 Stunden
vor 4 Wochen 1 Tag
vor 4 Wochen 3 Tagen