Comprendre les hooks
Les hooks sont l’un des moyens par lesquels les modules interagissent avec les modules ajoutés ou les sous-systèmes du noyau Drupal. Les hooks sont utilisés pour diverses tâches, y compris le prétraitement des variables pour les fichiers de templates (hook_preprocess()), la modification des listes d’informations (hook_tokens_alter(), hook_views_data_alter()) et la manipulation des formulaires (hook_form_alter()), entre autres. Cette page énumère tous les hooks fournis par le noyau.
Les modules peuvent définir leurs propres hooks additionnels. Par exemple, le module Flag définit hook_flag_options_alter(), qui peut être utilisé par des modules souhaitant modifier les options d’un flag existant par défaut. La plupart des modules qui définissent des hooks fournissent également une documentation à leur sujet. Cette documentation se trouve dans un fichier *.api.php.
Les hooks se déclenchent à différents points du flux d’exécution où Drupal recherche les contributions de tous les modules activés. Par exemple, lorsqu’un utilisateur visite une page d’aide sur un site Drupal, quand Drupal crée cette page d’aide, il donne à chaque module la possibilité de présenter sa documentation. Cela se fait en scannant tous les modules activés à la recherche d’une implémentation de hook_help(). C’est-à-dire une fonction nommée mymodule_help($route_name, \Drupal\Core\Routing\RouteMatchInterface $route_match), où « mymodule » est le nom du module, par exemple le hook d’aide du module Block s’appelle block_help(), et le hook d’aide du module Node s’appelle node_help(). Un hook peut prendre des paramètres ; les paramètres $route_name et $route_match du hook_help permettent au développeur de définir sur quelle(s) page(s) les messages d’aide seront affichés.
On peut considérer un hook comme un écouteur d’événements dans le sens où un événement déclenche une action. Un événement dans Drupal, tel que la suppression d’un nœud, déclenchera le hook "hook_node_delete". Si votre module implémente hook_node_delete, cette fonction sera exécutée lors de la suppression d’un nœud. Par exemple, votre fonction pourrait consister à diminuer le nombre total de nœuds, ainsi lors de la suppression d’un nœud votre fonction est appelée et le nombre est réduit de 1.
Voir également l’aperçu des hooks de modules dans le Guide de l’API Drupal. Vous pourriez aussi vouloir consulter cet excellent article expliquant le fonctionnement du système de modules/hooks Drupal à l’aide de constructions/extraits PHP simples.