Les autres réponses sont excellentes, précises, détaillées, mais je ne suis pas sûr que ce soient les "mots simples" qui expliquent le principe de base que le demandeur cherchait.
Je pense aux crochets comme un point où le code marque une pause et crie " Quelqu'un d'autre a quelque chose à ajouter ici? ". Tout module peut avoir une fonction qui répond à cela et qui se déclenche avec les données appropriées qui lui sont transmises à ce stade du code.
Hook_node_delete () est un bon exemple simple à utiliser . N'importe quel module peut l'utiliser pour que des choses se passent chaque fois qu'un nœud est supprimé. Les docs vous disent que ce hook transmet au module l’objet de ce nœud supprimé et qu’il décrit d’autres informations utiles, telles que le moment exact de son appel (par exemple, le moment où les données du nœud sont réellement supprimées de la base de données). , et où dans le code de Drupal le crochet est appelé (qui peut être plus d’un endroit).
Vous pouvez explorer les points d'ancrage existants et découvrir les données qui leur sont transmises en explorant des éléments tels que "point d'ancrage" dans l'api Drupal .
Les hooks fonctionnent selon une convention de nom: en utilisant hook_node_delete
notre exemple, lorsque le processus de suppression de noeud atteint le point où le hook est appelé, pour chaque module avec une fonction comme celle-ci, [modulename]_node_delete()
le mot hook dans le nom du hook est remplacé par le nom du module (par exemple my_amazing_module_node_delete()
), ces fonctions sont appelées.
Pourquoi? Ainsi, n'importe quel module peut faire n'importe quoi à ces points clés: par exemple, vous pouvez regarder le nœud supprimé et faire les choses s'il répond à une certaine condition (par exemple, envoyer un courrier électronique à un administrateur ou lancer un processus long).
Certains crochets vous permettent de modifier les éléments générés juste avant leur traitement. Par exemple, hook_menu_alter () vous transmet les éléments de menu actuels générés par le système. N'importe quel module peut définir une fonction some_modulename_menu_alter () et les regarder, éventuellement les modifier (en supprimer, en ajouter, les trier ...) et renvoyer le menu nouvellement modifié.
C’est simple, très puissant et est au cœur du fonctionnement de Drupal en tant que système modulaire. Les implémentations de hooks sont au cœur de la plupart des modules Drupal.
Lorsque vous parcourez le code d'un module Drupal, vous pouvez identifier les fonctions qui proviennent de hooks (par opposition aux fonctions simplement appelées depuis le code même du module), car la communauté Drupal applique une convention selon laquelle chaque implémentation d'un hook a une commentez devant comme ceci (notez le bit "Implements hook _..."):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Certains modules qui agissent en tant qu'API définissent leurs propres hooks. Par exemple, Vues définit de nombreux points d'ancrage qui vous permettent d'ajouter, de lire et d'éditer des données à différents moments du processus de création ou d'affichage d'une vue. Vous pouvez trouver des informations sur les points d'ancrage créés dans des modules personnalisés à partir de deux emplacements (en supposant que le module respecte les conventions, etc.):
Bootstrapping est, comme d’autres l’ont expliqué, un démarrage - je ne dupliquerai pas les autres bonnes explications claires.