Wie erstelle ich einen Haken?


18

Wie kann ich meinen eigenen Hook erstellen (ähnlich dem, den der Drupal-Kern erstellt), damit andere Drupal-Module ihn verwenden können?

Antworten:


20

Sie erstellen eigentlich keine Hooks. Sie verwenden Hilfsfunktionen wie module_invoke_all(), module_invoke()oder drupal_alter()alle Funktionen aufrufen , um den erwarteten Namen Pattern - Matching. Die aufgerufenen Funktionen werden normalerweise mit gefunden module_implements().

Auch wenn die Hooks nicht funktionieren müssen, empfiehlt es sich, sie zu dokumentieren, MODULE.api.phpindem Sie leere Stub- hook_NAME Funktionen mit Dokumentationskommentaren erstellen .


6
+1 zur Dokumentation, einem neuen Kodierungsstandard von Drupal 7, und viele Contrib-Module haben damit begonnen, ihn auch für D6 zu verwenden. Beachten Sie, dass es noch besser ist, anstelle einer leeren Funktion eine Beispielimplementierung bereitzustellen, um zu zeigen, was mit diesem Hook getan werden kann.
Berdir

1
Normalerweise geben Sie Code für den in MODULE.api.php aufgelisteten Hook an, wenn dieser Hook tatsächlich implementiert ist.
kiamlaluno

0

Sie können auch einen Hook erstellen. Mit hook_trigger_info können Sie einen neuen Hook erstellen und in Ihrem Modul müssen Sie ihn implementieren. Angenommen, Sie möchten ein Archiv von Knoten erstellen und alte Knoten darin ablegen. Sie möchten auch einen Hook auslösen, wenn der Archivierungsvorgang abgeschlossen ist. es wird so etwas geben

function hook_trigger_info() {
    return array(
            'node' => array(
                    'archive_nodes' => array(
                        'label' => t('Archive old nodes'),
                    )
            )
    );
} 

Nach der Definition des Hooks ist Ihr Modul für die Implementierung des Hooks und der Aktionen mit module_invoke () oder module_invoke_all () verantwortlich .

Sie können dem triggerModul ermöglichen, diesen neuen Hook auf der Registerkarte "Knoten" anzuzeigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.