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?

markdorison
la source

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 .

Pierre Buyle
la source
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.

M ama D
la source