J'ai créé un menu personnalisé (appelons-le "mynav") et dans mon thème, j'ai créé un modèle spécialement pour lui ( block--menu--menu-mynav.tpl.php
) qui contient:
<div id="mynav" class="<?php print $classes; ?>"<?php print $attributes; ?>>
<?php print $content ?>
</div>
Cela fonctionne bien.
Cependant, je préfère appliquer l'ID à la liste non ordonnée qui est générée et contenue dans $content
. Je suppose que je dois créer une fonction MYTHEME_links__system_mynav_menu
comme celle-ci:
function MYTHEME_links__system_mynav_menu($variables) {
return "TEST"; // Generate HTML here (<ul id="mynav">...)
}
mais cela ne semble pas avoir d'effet.
Qu'est-ce que je fais mal?
Réponses:
Afin de thématiser la liste non ordonnée, vous devez appeler theme_menu_tree (). Vous pouvez éditer votre template.php afin d'appeler cela.
Ensuite, si vous souhaitez créer un thème pour vos liens, appelez theme_menu_link ().
Maintenant, le problème avec Drupal 7 est qu'il y a un bug majeur quand il s'agit d'afficher la trace active des menus personnalisés.
Voir problème
Issue # 520106 - Aucun moyen de définir dynamiquement la trace active
Issue # 942782 - Les menus personnalisés ne reçoivent jamais de trace active
Vous n'avez pas de chance si vous voulez de vrais menus personnalisés. Ces problèmes sont très anciens dans la communauté drupal, donc je ne sais pas s'ils seront corrigés de sitôt. Je ne sais pas s'il y a du PHP qui peut aider. Vous pouvez vous tourner vers certains modules alternatifs afin de faciliter la fonctionnalité, comme les attributs de menu et le bloc de menu . Les deux peuvent aider à contourner le système de menu cruddy dans Drupal 7.
la source
Dans le template.php de votre thème, c'était la façon de faire les choses dans Drupal 6
Dans Drupal 7, vous devez appeler
la source
MYTHEME_menu_link
semble gérer uniquement les liens individuels. Je ne peux pas atteindre leul
.