Was sind hooks?
Eingetragen von DrupalFan (1646)
am 17.04.2007 - 16:23 Uhr in
am 17.04.2007 - 16:23 Uhr in
Kann mal jemand erklären, was denn hier in Druap all die "hooks" sind und die ganzen "hook"-Funktionen für eine Bedeutung haben?
Vielen Dank.
- Anmelden oder Registrieren um Kommentare zu schreiben
In Kurzform: Ein "hook" ist
am 19.04.2007 - 14:03 Uhr
In Kurzform: Ein "hook" ist - wie der Name schon sagt - ein Haken, an dem ein Modul mit dem Rest von Drupal interagieren kann.
Das bedeutet, dass jedes Modul einen Hook implentieren kann, d.h. wenn du im Modul mymodule die Funktion mymodule_ wird Drupal diese Funktion automatisch an der passenden Stelle aufrufen.
Ein Beispiel: Um Informationen über vorhandene Berechtigungen zu sammeln, ruft Drupal für jedes Modul den _perm-Hook ab. D.h. wenn du neue Berechtigungen in deinem Modul deklarieren willst, erstellst du einfach eine Funktion mymodule_perm() { return array('foobar'); }, und schon erscheint automatisch die Berechtigung foobar auf der Berechtigungsseite.
Oder, immer wenn Drupal ein Formular ausgibt, wird zunächst hook_form_alter aufgerufen, d.h. jedes Modul kann jedes Formular noch ändern.
Details hier: http://api.drupal.org/api/4.7/group/hooks
Danke für die Erklärung
am 23.04.2007 - 20:50 Uhr
Danke für die Erklärung und den Link. Ungefähr weiß ich jetzt schon, worum es hier geht.
Noch leichter wäre das zu verstehen, wenn man wüßte, wie der DrupalCore das macht:
- Wenn ich irgendwo in einem Modul z.bsp. die Funktion "function guestbook_menu()" einbaue, dann ist das eine hook-Fuktion, weil der hintere Teil "_menu" lautet. ABER woher weiß der DrupalCore, dass die Funktion existiert und wie finde der Core die Funktion? Die Funktion wird dem Core ja nirgends gemeldet.
Ich könnte mir nur vorstellen, dass der DrupalCore alle Modul-Dateien (*.module) nach Hook-Funktionen durchsucht, in dem spezielle Namen in den definiteren Funktionen gesucht werden.
Ist das so? Funktioniert das so? Oder woher weiß der Core dann, dass die Hook-Funktion "guestbook.menu()" existiert?
Vielen Dank.
Aufruf der hooks
am 24.04.2007 - 08:51 Uhr
Das ist richtig. Drupal versucht alle hooks aller aktivierten Module zu einem bestimmten Zeitpunkt aufzurufen. Warum zu einem bestimmten Zeitpunkt?
Nun, hooks die z.B. etwas mit Formularen zu tun haben, wie bspw. hook_form_alter(), müssen zu keinem anderen Zeitpunkt aufgerufen werden.
vg
--
md - DrupalCenter
mdwp
vg
md - DrupalCenter.de
mdwp* Drupal Consulting & Services