drupal hooks
am 29.01.2009 - 13:25 Uhr in
Hi,
Ich habe da mal ein paar Verständnissfragen bezüglich drupal hooks.
Erstmal etwas Prinzipielles. Die Hooks sind ja soweit in der API mehr oder weniger dokumentiert. Heißt das im Umkrehschluss, dass all die hooks, vom drupal core automatisch ausgeführt werden, sobald die entsprechende Methode vorhanden ist?
Ich habe mal ein paar Beispiele aus dem Netz gezogen und einfach copy&paste in mein Mopdul geladen. Eine Veränderung konnte ich jedoch nicht feststellen. Müssen die hooks vllt. doch noch manuell ausgeführt werden? Was hat es dann aber mit den Parametern auf sich? Fragen über Fragen!
Angenommen ich wollte ein zusätzliches Feld der Registrierung hinzufügen, wie würde ich das realisieren?
Enthalten die hooks callback funktionen um auf die Aktionen auch reagieren zu können (irgendwie müsste ja dann auch das Feld in die Datenbank gespeichert werden).
Ich bin mir sicher, dass diese Frage wohl schon dutzend mal gestellt wurde, und bitte daher meine Unwissenheit zu entschuldigen, jedoch finde ich nirgens einen Beitrag wo einfach mal Klartext geredet wird.
Lg
Foobar
- Anmelden oder Registrieren um Kommentare zu schreiben
Cache geleert?
am 07.02.2009 - 22:54 Uhr
Hi,
ich kann dir bei deinem Problem leider auch nicht 100 pro helfen.
Aber vielleicht versuchst du mal den Cache zu leeren. Habe bei der Modulentwicklung auch oft das Problem, dass Änderungen nicht sofort ersichtlich sind. Oftmals muss man erst den Cache leeren, damit die Änderungen wirksam werden.
Viele Grüße
Foobar schrieb Hi, Eine
am 07.02.2009 - 23:19 Uhr
Hi,
Eine Veränderung konnte ich jedoch nicht feststellen. Müssen die hooks vllt. doch noch manuell ausgeführt werden? Was hat es dann aber mit den Parametern auf sich? Fragen über Fragen!
Angenommen ich wollte ein zusätzliches Feld der Registrierung hinzufügen, wie würde ich das realisieren?
Wegen den hooks - vielleicht neben dem schon erwähnten Cache leeren, auch noch das Theme erneut aktivieren, wenn die template.php geändert wurde.
Wegen den Feldern ... das CORE Modul PROFILE aktivieren, dann kannst du in der Benutzerverwaltung neue Profilfelder anlegen und konfigurieren ...
Drupal 7 Screencasts in deutsch!
hooks
am 08.02.2009 - 00:05 Uhr
Moin!
Heißt das im Umkrehschluss, dass all die hooks, vom drupal core automatisch ausgeführt werden, sobald die entsprechende Methode vorhanden ist?
Das hat zwar nichts mit dem Grad der Dokumentation zu tun, aber ja, hooks werden automatisch ausgeführt, wenn sie richtig benannt worden sind.
Ich habe mal ein paar Beispiele aus dem Netz gezogen und einfach copy&paste in mein Mopdul geladen.
Kurze Zwischenfrage um einen grundsätzlichen Fehler auszuschliessen: die Funktion hast Du entsprechend des Namens Deines Moduls umbenannt? Angenommen, Dein Modul heisst "meinmodul" und der hook, den Du verwenden willst, heisst
hook_form_alter
, sollte die Funktion in Deinem Modul dannmeinmodul_form_alter
heissen.Angenommen ich wollte ein zusätzliches Feld der Registrierung hinzufügen, wie würde ich das realisieren?
Du fügst das Feld in der Implementation von hook_form_alter() hinzu, packst dann noch eine zusätzliche Validierungsfunktion und evtl. einen Submithandler dazu, damit die Eingaben in dem neuen Feld auch validiert und gespeichert werden.
<?php
function meinmodul_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'user_register') {
$form['extra_feld'] = array(
'#type' => 'textfield',
'#title' => t('Extra'),
'#default_value' => t('Additional info'),
);
$form['#validate'][] = 'meinmodul_validate_handler';
$form['#submit'][] = 'meinmodul_submit_handler';
}
}
function meinmodul_validate_handler($form, &$form_state) {
if ($form['form_id'] == 'user_register']) {
if (strlen($form_state['extra_feld']) < 3) {
form_set_error('extra_feld', t('You have to enter at least 3 characters.'));
}
}
}
function meinmodul_submit($form, &$form_state) {
// Werte aus $form_state irgendwo speichern
}
?>
So in etwa. Es gibt allerdings Umengen an Tutorials zur Modulerstellung und zum Hinzufügen von Feldern zu Formularen oder zum Verändern dieser Formulare ansich.
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
hooks
am 08.02.2009 - 01:44 Uhr
Das hat zwar nichts mit dem Grad der Dokumentation zu tun, aber ja, hooks werden automatisch ausgeführt, wenn sie richtig benannt worden sind.
Hy, jetzt sind ja schon einige Tage vergangen, und tatsächlich war genau dies mein Fehler. Ich muss sagen dass die Doku da für Einsteiger leider recht undeutlich ist, zumindest wenn man nicht weiß wonach man da suchen muss (die genaue Logik hinter der Doku ist mir im übrigen bis heute nicht ganz klar). Ich bedanke mich jedenfalls für die Antworten, letzten endes hat mir die freundliche Community im irc Channel weiter geholfen.
Die zusätzlichen Profilfelder habe ich im übrigen dann mit dem Profil Modul realisert. Schade nur dass sie standardmäßig nicht im Userprofil angezeigt werden.
Lg
Foobar