Comment Drupal dessert-il un hook de menu par rapport à l’URL demandée ?

Après avoir passé sa phase d’initialisation (bootstrap), Drupal appelle depuis l’index.php, la fonction chargée de trouver le bon « hook » de menu qui correspond à l’URL courante.

Dans l’ordre, ça donne :

  • menu_execute_active_handler()
    • menu_get_item()
      • _menu_translate()

Quelques explications :

menu_execute_active_handler() : charge la page de maintenance si le site est en maintenance, ou celle demandée sinon.

3 cas possibles : la page est affichée, l’utilisateur n’a pas accès, la page n’est pas trouvée.

menu_get_item() : recherche le hook de menu dans la table menu_router en gros.

_menu_translate() : Comme son nom de l’indique pas… cette fonction va vérifier les droits d’accès au hook de menu trouvé (en utilisant le « access callback » déclaré dans ce hook de menu).