Comment créer un crochet?


18

Comment puis-je créer mon propre hook (similaire à ceux créés par Drupal core) pour que d'autres modules Drupal puissent les utiliser?

Réponses:


20

Vous ne créez pas réellement de crochets. Vous utilisez des fonctions d'assistance telles que module_invoke_all(), module_invoke()ou drupal_alter()pour appeler toutes les fonctions correspondant au modèle de nom attendu. Les fonctions appelées se trouvent généralement avec module_implements().

Même s'il n'est pas nécessaire que les hooks fonctionnent, la meilleure pratique consiste à les documenter en MODULE.api.phpcréant des fonctions de stubs vides hook_NAMEavec des commentaires de documentation .


6
+1 sur la documentation, qui est une nouvelle norme de codage de Drupal 7 et de nombreux modules contrib ont également commencé à l'utiliser pour D6. Notez qu'au lieu d'une fonction vide, c'est encore mieux lorsque vous fournissez un exemple d'implémentation pour montrer ce qui peut être fait avec ce hook.
Berdir

1
En règle générale, vous fournissez le code du hook répertorié dans MODULE.api.php s'il existe une implémentation réelle de ce hook.
kiamlaluno

0

Vous pouvez également créer un hook, en utilisant hook_trigger_info vous pouvez créer un nouveau hook, et dans votre module, vous devez l'implémenter. Par exemple, supposons que vous souhaitiez créer une archive de nœuds et y placer d'anciens nœuds. Vous souhaitez également déclencher un hook lorsque l'opération d'archivage est terminée. ça va être quelque chose comme ça

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

Après avoir défini le hook, votre module est responsable de l'implémentation du hook et des actions à l'aide de module_invoke () ou module_invoke_all () .

Vous pouvez activer le triggermodule pour voir ce nouveau crochet sous l'onglet nœud.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.