Die anderen Antworten sind großartig, genau und detailliert, aber ich bin mir nicht sicher, ob sie die "einfachen Worte" sind, die die nackten Knochen des Konzepts erklären, nach dem der Fragesteller gesucht hat.
Ich stelle mir Hooks als einen Punkt vor, an dem der Code pausiert und " Hat noch jemand hier etwas hinzuzufügen? " Jedes Modul kann eine Funktion haben, die darauf antwortet und mit den entsprechenden Daten ausgelöst wird, die an dieser Stelle im Code an das Modul übergeben werden.
Ein schönes einfaches Beispiel ist hook_node_delete () . Jedes Modul kann es verwenden, um Dinge jedes Mal zu ermöglichen, wenn ein Knoten gelöscht wird. Die Dokumentation teilt Ihnen mit, dass dieser Hook dem Modul das Objekt des gelöschten Knotens übergibt, mit dem es arbeiten soll, und enthält weitere nützliche Informationen, z. B. über den genauen Zeitpunkt des Aufrufs (z. B. bevor die Knotendaten tatsächlich aus der Datenbank gelöscht werden). , und wo in Drupals Code der Hook aufgerufen wird (das kann mehr als eine Stelle sein).
Sie können untersuchen, welche Hooks vorhanden sind, und herausfinden, welche Daten an sie übergeben werden, indem Sie in der Drupal-API Dinge untersuchen, die mit "hook_" beginnen .
Hooks funktionieren nach Namenskonventionen: In hook_node_delete
unserem Beispiel, wenn der Knotenlöschprozess den Punkt erreicht, an dem der Hook aufgerufen wird, wird für jedes Modul mit einer Funktion wie dieser [modulename]_node_delete()
das Wort hook im Hook-Namen durch den Namen des Moduls ersetzt (z. B. my_amazing_module_node_delete()
) werden diese Funktionen aufgerufen.
Warum? Jedes Modul kann also an diesen wichtigen Punkten alles tun: Beispielsweise können Sie den gelöschten Knoten anzeigen und Aktionen ausführen, wenn eine bestimmte Bedingung erfüllt ist (z. B. E-Mail an einen Administrator senden oder einen längeren Prozess starten).
Mit einigen Hooks können Sie Dinge ändern, die unmittelbar vor ihrer Verarbeitung generiert wurden. Beispiel: hook_menu_alter () übergibt Ihnen die aktuellen Menüelemente , die das System generiert hat. Jedes Modul kann eine Funktion some_modulename_menu_alter () definieren und diese anzeigen, optional ändern (einige löschen, einige hinzufügen, sortieren ...) und das neu geänderte Menü zurückgeben.
Es ist einfach, sehr leistungsstark und bildet den Kern der Funktionsweise von Drupal als modulares System. Die Implementierung von Hooks ist das Herzstück der meisten Drupal-Module.
Wenn Sie den Code eines Drupal-Moduls durchsehen, können Sie feststellen, welche Funktionen von Hooks stammen (im Gegensatz zu Funktionen, die einfach aus dem Modulcode selbst aufgerufen werden), da die Drupal-Community eine Konvention erzwingt, bei der jede Implementierung eines Hooks eine hat Kommentar davor wie folgt (beachte das Bit "Implements hook _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Einige Module, die als APIs fungieren, definieren ihre eigenen Hooks. Beispielsweise definiert Views viele Hooks, mit denen Sie Daten an verschiedenen Stellen beim Erstellen oder Anzeigen einer View hinzufügen, lesen und bearbeiten können. Informationen zu Hooks, die in benutzerdefinierten Modulen erstellt wurden, finden Sie an zwei Stellen (vorausgesetzt, das Modul folgt Konventionen usw.):
Bootstrapping ist, wie andere erklärt haben, im Grunde genommen ein Hochfahren - ich werde die anderen guten, klaren Erklärungen nicht wiederholen.