webleads-tracker

Menu déroulant sous Drupal 7

Implémentation des fonctionnalitées

Nous allons maintenant créer le module proprement dit.
Nous allons avoir besoin de deux choses :

Récupérer les informations du menu

Afin de récupérer les informations du menu on va utiliser la fonction menu_tree_all_data.
Insérez ce code dans le fichier menu2levels.module.

     

La premiere fonction est un hook drupal (API - hook_preprocess_HOOK).
Drupal utilise les hooks afin que les modules puissent injecter ou altérer des informations dans le coeur de drupal.
D'une certaine maniére un hook est un observer de l'objet observable drupal bien qu'il ne soit jamais attaché au coeur de drupal.
En d'autres termes Drupal détecte automatiquement quel module implemente quel hook et les éxécute chacun leur tour lorsque cela est nécéssaire.
Le rôle de cette fonction est donc de générer un tableau comportant l'ensemble des liens du menu et de modifier la variable $variables passé par référence afin de rendre accessible les données recoltées au moteur de template.


La deuxieme fonction permet quand à elle de parcourir recursivement les données retournées par la fonction menu_tree_all_data.

La fonction de thème

Afin de pouvoir utiliser une fonction de théme personnalisée nous devons tout d'abord la déclarer à drupal.
Pour cela nous utilisons le hook HOOK_theme() (API - hook_theme) ou HOOK est le nom du module.
Insérez ce code dans le fichier menu2levels.module.


 

/*
* Implements hook_theme
*/
function menu2levels_theme($existing,$type,$theme,$path) {  
    return(array("menu2levels_menu"=>array("variables"=>array())));
}  

Définission maintenant la fonction de thème menu2levels_menu qui doit retourner le code HTML de notre menu.
Insérez ce code dans le fichier menu2levels.module.


 
  

Cette fonction crée des listes imbriquées avec nos éléments de menu.