it-swarm.com.de

Was ist das Grundkonzept hinter Haken?

Ich bin fortgeschritten in PHP. Um meine Fähigkeiten zu verbessern, lerne ich Drupal 7. Während ich Drupal Architekturkonzepte lernte, verwirrten mich die Begriffe Hooks und Bootstrapping a Menge. Ich habe das Buch "Pro Drupal Development" und einige Dokumentationen auf drupal.org gelesen, aber es ist für mich so fortgeschritten, zu lernen, wie Hooks in Drupal funktionieren, um die Webseite anzuzeigen.

Kann mir jemand sagen, was Haken in einfachen Worten sind?

120
GiLL

Die anderen Antworten sind großartig, genau, detailliert, aber ich bin nicht sicher, ob es sich um die "einfachen Worte" handelt, die die 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 hier noch jemand 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 geschehen zu lassen, wenn ein Knoten gelöscht wird. In den Dokumenten wird angegeben, dass dieser Hook dem Modul das Objekt des gelöschten Knotens übergibt, mit dem gearbeitet werden soll, und es werden andere nützliche Informationen beschrieben, z. B. der genaue 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 (der mehr als eine Stelle sein kann).

Sie können untersuchen, welche Hooks vorhanden sind, und herausfinden, welche Daten an sie übergeben werden, indem Sie Dinge untersuchen, die mit "hook_" in the Drupal api beginnen.

Hooks arbeiten nach einer Namenskonvention: Verwenden Sie hook_node_delete Als Beispiel, wenn der Knotenlöschvorgang den Punkt erreicht, an dem der Hook aufgerufen wird, für jedes Modul mit einer Funktion wie dieser [modulename]_node_delete(), in der das Wort verwendet wird Der Name des Hakens wird durch den Namen des Moduls ersetzt (z. B. my_amazing_module_node_delete()). Diese Funktionen werden aufgerufen.

Warum? Jedes Modul kann also an diesen wichtigen Punkten alles tun: Sie können beispielsweise den gelöschten Knoten betrachten und Dinge tun, wenn er eine bestimmte Bedingung erfüllt (z. B. eine E-Mail an einen Administrator senden oder einen langen 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 anzeigen, optional ändern (einige löschen, einige hinzufügen, sortieren ...) und das neu geänderte Menü wieder übergeben.

Es ist einfach, sehr leistungsfähig und bildet den Kern dessen, wie Drupal als modulares System funktioniert. Die Implementierung von Hooks ist das Herzstück der meisten Drupal Module).

Wenn Sie den Code eines Drupal - Moduls durchsehen, können Sie erkennen, welche Funktionen von Hooks stammen (im Gegensatz zu Funktionen, die einfach aus dem Modulcode selbst aufgerufen werden), als Drupal Community erzwingt eine Konvention, bei der jeder Implementierung eines Hooks ein Kommentar wie dieser vorangestellt ist (beachten Sie das Bit "Implementiert 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. Beispiel: Ansichten definiert viele Hooks, mit denen Sie Daten an verschiedenen Stellen beim Erstellen oder Anzeigen einer Ansicht 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 den Konventionen usw.):

  • Der Code und die Kommentare in der Datei modulename.api.php Im Modulordner
  • drupalcontrib.org - hier ist zum Beispiel ihre Liste von D7-Modulen sie haben Informationen zu und hier ist ihre Seite von Views hooks

Bootstrapping ist, wie andere erklärten, im Grunde genommen ein Hochfahren - ich werde die anderen guten klaren Erklärungen nicht duplizieren.

107

Hooks sind meistens Implementierungen der Muster Besucher und Beobachter .

Eine der häufigsten Hooks-Implementierungen ist hook_men , mit der Module neue Pfade in einem Drupal -System) registrieren können.

function my_module_menu() {
  return array('myawesomefrontpage' => array(
    'page callback' => 'function_that_will_render_frontpage'
  ));
}

Ein sehr häufiges Muster in Drupal ist ein [DATATYPE]_info Haken und ein [DATATYPE]_info_alter Haken. Wenn Sie einen neuen Feldtyp erstellen möchten, implementieren Sie den entsprechenden field_info - Hook, und wenn Sie einen vorhandenen manipulieren möchten, implementieren Sie den entsprechenden field_info_alter - Haken.

Bearbeiten: Wie Chx in den Kommentaren hervorhebt, ist das Beobachtermuster Objekt orientiert, was Drupal 7 ist meistens immer noch nicht. Es gibt jedoch eine Wiki-Seite, Drupal-Programmierung aus einer objektorientierten Perspektive (Erstellt von JonBob am 4. April 2005), die erklärt, wie = Drupal verwendet trotzdem objektorientierte Codemuster. Es ist interessant festzustellen, dass Beobachter, aber keine Besucher erwähnt werden.

Hinweis zu Drupal 8 Dies ist noch ziemlich früh und kann sich ändern, aber ich möchte das hinzufügen, während Hooks sind seit geraumer Zeit der De-facto-Standard beim Hinzufügen von Funktionen zu Drupal. Das Konzept von Plugins wird in Drupal 8) viel sichtbarer und wird geben uns neue Möglichkeiten der Interaktion mit Core. Relevant Problem und Dokumentation .

52
Letharion

Für Laien sind Hooks eine Art Brücke, über die Module miteinander interagieren, die Struktur und Daten des anderen ändern, neue Daten bereitstellen usw.

In den meisten Fällen ist das Wort hook_ in Funktionsnamen wird durch den Namen Ihres Moduls ersetzt. Auf diese Weise kann Ihr Modul auf den Betrieb eines anderen Moduls zugreifen. Zum Beispiel ruft ein drupal Kernmodul namens "node" verschiedene Hooks auf. Einer davon ist hook_node_update wird jedes Mal aufgerufen, wenn ein vorhandener Knoten aktualisiert wird. Wenn dieser Hook aufgerufen wird, implementiert Ihr Modul (sagen wir, wir nennen es mymodule) hook_node_update wird aufgerufen. In diesem Fall handelt es sich um eine Funktion in der .module-Datei Ihres Moduls mit dem Namen mymodule_node_update (Diese Funktion kann sich natürlich in jeder Datei im Ordner Ihres Moduls befinden, solange sie auch in der .module-Datei enthalten ist.) Diesem Hook werden auch die erforderlichen Parameter (Variablen) übergeben, die er verwenden, ändern und/oder zu der Funktion zurückkehren kann, die den Hook aufgerufen hat.

Als ich anfing, Drupal zu lernen, saß ich im selben Boot wie Sie. Es ist zunächst etwas schwierig zu verstehen, aber sobald Sie es verstanden haben, ist es ach so einfach und intuitiv. Viel Glück.

32
Beebee

Einer der Hauptentwickler hat vor einiger Zeit einen Artikel mit dem Titel "Drupal-Programmierung aus objektorientierter Perspektive" geschrieben. Es erklärt sehr gut, wie man sich vorstellen kann, dass Hooks viele der gängigen Entwurfsmuster implementieren. Die beste Erklärung für Haken stammt aus dem Artikel:

Das Hook-System von Drupal ist die Basis für die Schnittstellenabstraktion. Hooks definieren die Operationen, die an oder von einem Modul ausgeführt werden können. Wenn ein Modul einen Hook implementiert, schließt es einen Vertrag ab, um eine bestimmte Aufgabe auszuführen oder einen bestimmten Informationstyp zurückzugeben, wenn der Hook aufgerufen wird. Der aufrufende Code muss nichts über das Modul oder die Art und Weise wissen, wie der Hook implementiert wird, damit durch Aufrufen des Hooks nützliche Arbeit geleistet werden kann.

31
mpdonadio

Der Bootstrap ist der Prozess, den Drupal durchläuft, um eine Seite zu erstellen, die im Wesentlichen den gesamten Kern-, Themen- und Modulcode der Reihe nach durchläuft.
Es ist im Grunde, wie Drupal hochfährt und sich darauf vorbereitet, seine Arbeit als CMS zu erledigen.

Es ist insofern clever, als es uns ermöglicht, Hooks an einer beliebigen Stelle in unseren Modulen und Themen zu platzieren, und der bootstrap -Prozess stellt sicher, dass sie am richtigen Punkt ausgeführt werden.
Wenn Sie beispielsweise 'hook_form_alter' verwenden, um einem Formular ein benutzerdefiniertes Kontrollkästchen hinzuzufügen, stellt Drupals bootstrap sicher, dass dieser Code ausgeführt wird, bevor das Formular gerendert wird.

Ein Problem mit bootstrap besteht darin, dass die Ausführung des gesamten Prozesses einige Zeit in Anspruch nimmt, selbst wenn Sie nur eine kleine Datenmenge zurückgeben. Wenn Sie Drupal mit dem Servicemodul als API verwenden und viele kleine XHTML- oder JSON-Antworten zurückgeben, ist das Durchlaufen des gesamten bootstrap nicht sehr leistungsfähig. Einige kluge Leute suchen nach klugen Wegen, um dies für Drupal 8 zu umgehen.

Zum Rendern normaler Drupal -Seiten funktioniert der bootstrap -Prozess jedoch hervorragend. Er verwendet das Drupals-Caching-System, um die Arbeit zu beschleunigen, und gibt Ihnen die vollständige Kontrolle über jeden Teil Ihrer Site. Wenn Sie feststellen, dass Ihre Website langsam ist, können Sie jederzeit APC oder MemCached verwenden, um die Geschwindigkeit zu erhöhen.

Ich hoffe, meine Antwort war richtig und erklärt die Dinge einfach für Sie. Ich bin kein Experte, aber ich denke, so funktioniert es.

20
medden

Bootstrap ist der Prozess, während dessen sich Drupal selbst initialisiert; der Prozess beinhaltet tatsächlich:

  • Festlegen des Fehlers und der Ausnahmebehandlungsroutinen
  • Initialisierung des Werts einiger spezifikationsglobaler Variablen in $_SERVER
  • Initialisieren einiger Variablen mit init_set()
  • Suchen der zwischengespeicherten Version der zu bedienenden Seite
  • Datenbank initialisieren
  • Festlegen der Handler, die Dateien laden, wenn eine Klasse oder eine Schnittstelle nicht gefunden wird
  • Initialisierung der Variablen Drupal)
  • Initialisierung der Sitzung PHP)
  • Initialisierung der Sprachvariablen
  • Laden der aktivierten Module

Einige der von mir beschriebenen Operationen sind spezifisch für Drupal 7 oder höher, aber die meisten Operationen sind unabhängig von der Version Drupal).

Ein Hook ist eine PHP -Funktion, die bei Bedarf von Drupal oder Modulen von Drittanbietern aufgerufen werden kann, um eine Aufgabe auszuführen. Anstatt eine vorangestellte Liste der aufzurufenden Funktionen zu haben, wird die Liste erstellt Überprüfen der aktivierten Module und der von ihnen implementierten Funktionen.
Beispiel: Drupal verwendet hook_node_update(); wenn ein Knoten mit node_save () gespeichert wird, wird der folgende Code ausgeführt .

// Call the node specific callback (if any). This can be
// node_invoke($node, 'insert') or
// node_invoke($node, 'update').
node_invoke($node, $op);

Was node_invoke () tut, ist Folgendes:

  • Abrufen der Liste aller aktivierten Module
  • Überprüfen, ob die aktivierten Module eine Funktion haben, deren Name auf "_node_update" endet und mit dem Kurznamen des Moduls beginnt
  • Aufruf dieser Funktion, Übergabe von $node Als Parameter

Hooks können ihre eigenen Daten in einer Datenbank speichern oder den von einer Funktion zurückgegebenen Wert ändern. Der letzte Fall ist zum Beispiel, was mit hook_form_alter () passiert, was den Wert von $form Ändert, der als Referenz auf drupal_prepare_form () übergeben wird.

Drupal-Hooks werden im Allgemeinen mit drei Funktionen aufgerufen:

drupal_alter() ist die Funktion zum Aufrufen bestimmter Hooks, deren Zweck darin besteht, die als Referenz übergebenen Daten zu ändern, z. B. hook_form_alter () , hook_hook_info_alter () und hook_tokens_alter () .

Es gibt andere Funktionen, die zum Aufrufen von Hooks verwendet werden, z. B. node_invoke(), aber diese Funktionen verwenden im Wesentlichen eine der zuvor aufgeführten Funktionen.

14
kiamlaluno

Hooks sind pointcuts und module_invoke_all ist der Weber (leider sind wir in der Implementierung nicht klar und es gibt andere Webfunktionen). Soweit mir bekannt ist, ist Drupal das einzige System, das AOP mit PHP - Funktionen implementiert.

Siehe eine weitere Erklärung zu Wie funktioniert AOP in Drupal?

11
user49

Wenn Sie die Hooks sehen möchten Drupal lässt Sie anrufen, gehen Sie zu api.drupal.org , gehen Sie zum Suchfeld und geben Sie 'hook_' ein Sie erhalten eine große Liste der meisten von Drupal definierten Hooks. Machen Sie dasselbe für '_alter' und sehen Sie noch mehr.

Die Seite Node API Hooks bietet eine chronologische Liste aller Hooks, die während der Knotenoperationen aufgerufen werden. Sie können das Modul Node] und die Entity- und Field-Systeme sehen, die sich beim Aufrufen von Hooks gegenseitig drehen.

Wenn Sie beispielsweise nach unten scrollen und sich den Abschnitt für node_load() ansehen: Das Modul Node gibt Ihnen einen hook_load () und übergibt die Steuerung an das Entitätssystem, das geladen wird Einige Felder. Es gibt eine ganze Reihe von Feld-Hooks, die nicht aufgelistet sind. Wenn dies vorbei ist, ruft das Entitätssystem hook_entity_load() auf, bevor die Steuerung an Node, der hook_node_load().

Dies gibt Ihrem Code die Möglichkeit, beim Laden Stück für Stück auf den betreffenden Knoten zu reagieren. Das Erlernen dieser Hooks und wann und warum sie aufgerufen werden, ist Teil des Abenteuers von Drupal Codierung. :-)

Andere Systeme haben auch Haken. Wie hook_init() und hook_boot() . Dies gelangt zum bootstrap Teil Ihrer Frage. hook_boot() wird von Drupal aufgerufen, bevor das Caching-System geladen wurde. Also, wenn Ihr Modul benötigt Um etwas zu tun, bevor Drupal wirklich gestartet wurde und Sie möchten, dass Ihr Code unabhängig vom Caching ausgeführt wird, implementieren Sie hook_boot(). Andernfalls, wenn Sie sich nur für Seiten interessieren Wenn diese nicht zwischengespeichert sind, implementieren Sie hook_init().

Dies gibt Ihnen die Möglichkeit, etwas früh im Ladevorgang zu implementieren, bevor Drupal vollständig gestartet wurde), und gibt Ihnen gleichzeitig Flexibilität, welchen Punkt im Prozess Sie abfangen möchten.

Wenn Sie sicherstellen müssen, dass Drupal bis zu einem bestimmten Punkt gestartet wurde, bevor Sie fortfahren, können Sie drupal_bootstrap() aufrufen. Wenn Sie sich durch diese Dokumentation klicken Sie können die verfügbaren Ebenen bootstrap) sehen, von nichts bis zu allem.

Und schließlich können Sie im Beispielprojekt ausführlich dokumentierten Code für ein bestimmtes Subsystem sehen.

5
paul-m

Hooks sind PHP-Funktionen, Bausteine, die auf den Namenskonventionen "yourmodulename_hookname" basieren. Sie sollen Entwicklern das Erstellen von Modulen erleichtern.

Module sind das eigentliche Geschäft, da sie sowohl CORE- als auch benutzerdefinierte Funktionen in Ihrem Drupal System) ermöglichen. Daher bestehen Module aus Hooks und wenn ein Modul in Ihrer Drupal - Installation aktiviert ist, können seine Hooks-Funktionen dank der module.inc-Funktion module_invoke_all ($ hook) von anderen Modulen aufgerufen werden oder module_invoke.

Um zu verstehen, was Hooks sind, sollten Sie sich daher wirklich die Hände schmutzig machen und die Modulentwicklung ausprobieren. Laden Sie zu diesem Zweck zunächst einige von Drupals Beispiele für Entwickler herunter und probieren Sie sie aus. Sie sollten sich auch mit Modulerstellung vertraut machen.

Hier sind einige der nützlichen Drupal-Beispiele für die oben genannten Entwickler:

Implementierungsbeispiel für hook_block_view () im Modul block_example

/**
 * @file examples/block_example/block_example.module line 127
 *
 * Implements hook_block_view().
 *
 * This hook generates the contents of the blocks themselves.
 */
function block_example_block_view($delta = '') {
  //The $delta parameter tells us which block is being requested.
  switch ($delta) {
    case 'example_configurable_text':
      // The subject is displayed at the top of the block. Note that it
      // should be passed through t() for translation. The title configured
      // for the block using Drupal UI supercedes this one.
      $block['subject'] = t('Title of first block (example_configurable_text)');

Mit diesem Hook können Sie auf die Blockerstellung von Drupal zugreifen, um benutzerdefinierte Blöcke auf Ihrer Website anzuzeigen. Es ist möglich, weil das block.module eine _ block_render_block-Funktion hat, mit der alle Module ihre hook_block-Ansicht definieren können (beachten Sie die letzte Zeile module_invoke):

/**
 * @file modules/block/block.module, line 838
 *
 * Render the content and subject for a set of blocks.
 *
 * @param $region_blocks
 *   An array of block objects such as returned for one region by _block_load_blocks().
 *
 * @return
 *   An array of visible blocks as expected by drupal_render().
 */
function _block_render_blocks($region_blocks) {
  ...
  foreach ($region_blocks as $key => $block) {
    ...
    $array = module_invoke($block->module, 'block_view', $block->delta);

Implementierungsbeispiel für hook_menu () im Modul render_example

/**
 * @file examples/render_example/render_example.module line 22
 * 
 * Implements hook_menu().
 */
function render_example_menu() {
  ...
  $items['examples/render_example/arrays'] = array(
    'title' => 'Render array examples',
    'page callback' => 'render_example_arrays',
    'access callback' => TRUE,
  );

Dieser Hook ist mit dem URL-Routing-System von Drupal verknüpft und definiert URL-Muster mit zugehörigen Render-Rückrufen, die von Ihrem Modul verwendet werden. Es wird aufgerufen von system.module .

Über den Bootstrap müssen Sie im Grunde nur wissen, dass er bei jeder Seitenanforderung ausgeführt wird. Ich rate Ihnen wirklich zu lesen diese Stackoverflow-Antwort , es erklärt, wie bootstrap und Hooks zusammenhängen, aber getrennt sind.

In Bezug auf die Anzeige der Webseite wird die HTML-Anzeige der Drupal-Website hauptsächlich mit Render-Arrays und Theming erreicht.

5
B2F

Überall dort, wo ein Modul module_implements () aufruft http://api.drupal.org/api/drupal/includes%21module.inc/function/module_implements/7 Drupal löst alle korrekt benannten Funktionen in der richtigen Reihenfolge basierend auf ihrem Gewicht aus. Diese werden als Hook-Funktionen bezeichnet, da in der Dokumentation für Module, die module_implements verwenden, Dinge wie hook_menu angezeigt werden (wenn das Menü angezeigt wird) ruft alle Funktionen auf, die zur Rückgabe von Menüelementen entwickelt wurden). Das Wort "hook" muss nur durch den Namen des Moduls ersetzt werden, das es implementiert, und Drupal erledigt den Rest.

Es gibt auch eine drupal_alter () -Funktion, die alle korrekt benannten Änderungsfunktionen auslöst, mit der Absicht, dass Sie Dinge ändern können, die zuvor von einem anderen Hook registriert wurden.

Im Allgemeinen werden Änderungen Argumente als Referenz übergeben, sodass Sie das Objekt direkt bearbeiten können, während "normale" Hooks Sie normalerweise dazu bringen, neue Dinge zurückzugeben.

Die Idee ist, dass jedes Modul (einschließlich Ihres eigenen) einfach erweitert werden kann, indem Sie Drupal) bitten, alle erforderlichen Hook-Funktionen aufzurufen und zurückzugewinnen, was sie zur Verarbeitung zurückgeben. Das Modul, das die Hook-Funktionen aufruft Sie müssen nichts über die Module wissen, die die Hooks implementieren, und die Module, die den Hook implementieren, müssen nichts über das Modul wissen, das den Hook aufruft. Das einzige, was beide Module wissen müssen, ist die Struktur der Daten zurückgegeben oder geändert werden.

In der Praxis werden Haken am häufigsten verwendet, um:

  • reagieren Sie auf Ereignisse, z. B. wird hook_user_login aufgerufen, wenn sich ein Benutzer anmeldet
  • registrieren Sie etwas Neues, mit dem Sie das System erweitern können, wie hook_menu
  • theme/Render-HTML oder Build/Validate/Submit-Formulare
2
David Meister

Für mich dreht sich alles um die Funktion module_implements, wenn es um Hooks und Core geht (D7). Eine Sache, die ich für wichtig halte, um zu verstehen, ist, dass Sie durch das Schreiben eines Hooks zum Ändern von etwas keineswegs das letzte Wort darüber haben, was mit den Datenstrukturen geschieht, mit denen Sie sich befassen. Ihr Hook gerät einfach in die Zeile (Warteschlange) von Funktionen, die AUCH auf dieselben Datenstrukturen wirken, unabhängig davon, ob es sich um Menüs, menu_links, Blöcke, Knoten, Benutzer oder eine Entität oder ein Renderelement handelt.

Um wirklich zu sehen, dass Ihre Haken in der erwarteten Weise verwendet werden, müssen Sie wissen oder wissen, wo Sie (Ihr Haken) in der Schlange stehen. Dies wird durch das Gewicht Ihres Mondules bestimmt. Drupal Core ruft einfach die richtig benannten Hooks in aufsteigender Gewichtsreihenfolge auf und was auch immer mit den Daten passiert, passiert.

Ich habe zuvor Hooks geschrieben, die keine Wirkung hatten, nur um nach stundenlangem Headbangen zu erfahren, dass mein Modulgewicht zu gering war und nachfolgende Hooks das, was ich getan habe, praktisch nicht mehr taten oder alles zusammen völlig ignorierten.

Ein gut geschriebener Hook "handhabt" oder "zwingt" sich nicht, der Letzte zu sein, sondern "platziert Nizza mit anderen", indem er sicherstellt, dass die Datenstrukturen beibehalten werden, wie dies von den übrigen Hooks auf der ganzen Linie erwartet wird.

Und ich spreche von "The Line" von Haken. Im Laufe der Jahre habe ich Google nach Drupal Zeug) durchsucht. Dieses Bild scheint eine gute Darstellung der Vorverarbeitungs- und Prozess-Hook-Liste der Möglichkeiten zu sein.
enter image description here

0
Dan Shumaker

Haken. Ermöglichen Sie Modulen die Interaktion mit dem Drupal -Kern. Das Modulsystem von Drupal basiert auf dem Konzept der "Hooks". Ein Hook ist eine PHP -Funktion mit dem Namen foo_bar (), wobei "foo" der Name des Moduls ist (dessen Dateiname also foo.module ist) und "bar" der Name des Hooks ist.

0
Amrendra Mourya

Auf viel einfachere Weise helfen Hooks dem Entwickler, die vorhandene Funktionalität gemäß den Anforderungen zu ändern, ohne Änderungen am vorhandenen Code vorzunehmen. Eher wie abstrakte Funktion in PHP.

Beispiel: Sie haben ein Modul zur Buchung eines Bustickets erstellt. Laut Ihrem Code kann der Abholort nicht bearbeitet werden, wenn das Ticket einmal gebucht wurde. Dies war Ihre Anforderung für dieses Projekt. Angenommen, Ihr Freund benötigt dasselbe Modul für ähnliche Anforderungen, mit der Ausnahme, dass der Benutzer den Abholort ändern kann. Irgendwie muss er Ihr Modul verwenden und Sie möchten nicht, dass er Codeänderungen vornimmt. Sie stellen also eine Schnittstelle bereit (in unserem Fall Hook), über die er seine Änderungen implementieren kann, ohne Änderungen an Ihrem Modul vorzunehmen.

In drupal bis drupal-7 haben wir Hooks für Module sowie Themen. Um zu wissen, wie Hook funktioniert, überprüfen Sie drupal.org Hooks , um einen benutzerdefinierten Hook zu erstellen Link

0
Anamika

Sie haben oben viele Antworten, aber ich möchte eine Antwort auf viel einfachere Weise geben, um das grundlegende Konzept hinter Hooks zu verstehen. Hooks sind tatsächlich in Funktionen in drupal Core integriert, um verschiedene Dinge zu verwalten und verschiedene Aufgaben im Core zu erledigen. Sie können Ihre eigenen Funktionen mit diesen integrierten Funktionen von drupal) synchronisieren = core, um ihre Funktionalität in Ihren eigenen Funktionen hinzuzufügen, indem Sie verschiedene Hooks aufrufen.

Ich hoffe, Sie werden den Punkt bekommen!

0
user25892