J'ai navigué sur le Web et il n'est pas du tout évident de créer un thème pour les menus personnalisés. J'ai cherché pendant des heures et je n'ai pas trouvé un seul post qui illustre le processus, du début à la fin, de la création d'un menu et de la personnalisation de sa sortie. Il semble que ce soit un processus en plusieurs étapes:
- Créez le menu via l'interface Drupal.
- Créez une fonction de thème dans votre
template.php
fichier pour thème la sortie. - Exposez ce menu à un fichier de modèle (en quelque sorte) en l'ajoutant en tant que variable.
- Appelez la
theme
fonction dans le menu du fichier modèle.
1 est assez facile à faire, les problèmes que je rencontre sont avec 2, 3 et 4. En regardant le modèle de page par défaut, je vois qu'il expose le menu principal dans la variable $main_menu
. Plus tard dans la page, vous pouvez voir la fonction theme('links__system_main_menu', array('links' => $main_menu...
, ce qui signifie qu'elle cherche quelque part une fonction de thème correctement nommée et l'utilise pour générer la sortie.
Je sais que si je place function theme_links__system_main_menu(&$variables) {...}
dans mon fichier template.php Drupal utilisera cette fonction par opposition à function theme_menu_links(&$variables) {...}
.
Ce que je ne sais pas, c'est comment Drupal relie le menu personnalisé que j'ai créé avec cette fonction. Disons par exemple que j'ai créé un menu appelé My Menu
. Puis-je créer la fonction suivante dans mon template.php
fichier et thème la sortie pour ce menu?function theme_links__system_my_menu(&$variables) {...}
De plus, comment rendre ce menu personnalisé disponible dans un fichier modèle? Comment Drupal expose-t-il la $main_menu
variable à page.tpl.php?
Je pense que la clé qui me manque ici est de savoir comment intégrer la variable qui représente mon menu personnalisé dans une page de modèle. Pour la plupart, je suis complètement perdu avec ce que je dois faire après avoir créé le menu.
Merci pour l'aide.
EDIT: Je devrais probablement publier ce que je fais. Par mon commentaire à BetaRide ci-dessous, j'ai besoin d'injecter du HTML personnalisé dans les <li>
éléments des éléments de menu. Plus précisément, j'ajoute des icônes Twitter Bootstrap.