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.
Vous voudrez peut-être examiner le module Nice Menus . Voici une citation à ce sujet (à partir de la page du projet du module):
la source
Selon ce que vous souhaitez personnaliser, votre approche est très complexe. Habituellement, je crée le menu via l'interface Drupal comme vous l'avez suggéré. Je prends le module développeur de thème et Firebug pour découvrir quels modèles, crochets et directives CSS je dois écraser pour l'adapter à mes besoins.
Il vaut la peine d'envisager de créer un sous-thème du thème de base que vous utilisez avant de commencer à peaufiner. Cela facilite la mise à jour de votre thème de base.
la source
voici un code intelligent qui peut accéder à tous les éléments de menu pour tout niveau 2 ou 3 ou plus
placez ce code dans votre fichier tpl n'oubliez pas d'appeler boostrap js et css dernières versions:
ce code renverra le menu pour les classes css vous pouvez utiliser votre propre j'utilise bootstrap avec des css personnalisés
la source