Comment afficher des sous-menus des liens primaires dans Drupal ?
Référence en anglais sur drupal.org : http://drupal.org/node/685664
15 Janvier 2010 - 15h52
Étape 1 : puisque nous allons utiliser du code PHP dans un bloc pour afficher un menu, la première chose à faire est d'activer le filtre PHP dans la page Modules ( menu Administrer > Construction du site > Modules, groupe Core - facultatif).
Étape 2 : allez dans Administrer > Construction du site > Blocs > Ajouter un bloc et créez un nouveau bloc. Ajoutez une Description du bloc (j'indique sous-menu). Choisissez PHP Code comme Format d'entrée et collez le code suivant dans la zone réservée au Corps du bloc :
<?php
$menuItems = menu_tree_page_data('primary-links');
foreach($menuItems as $key => $m) {
//check current active menu
if ($m['link']['in_active_trail'] && $menuItems [$key]['below']) {
$menu = menu_tree_output($menuItems [$key]['below']);
}
}
//print the menu
print $menu;
?>Assurez-vous d'avoir vos délimiteurs PHP dans votre code. Cliquez sur Enregistrer le bloc.
Étape 3 : placez votre bloc dans la région de votre choix, et c'est tout. La prochaine fois que vous sélectionnerez un élément de menu dans les liens primaires, ses sous-menus s'afficheront dans le bloc.
Vous pouvez utiliser active-trail pour styliser l'élément de menu sélectionné.
- Version imprimable
- 10016 lectures
-

Commentaires
et si on n'utilise pas les liens primaires?
Bravo pour vos tutoriels, ils sont simples et clairs.
Je cherche à faire la même chose, mais avec nice-menu en menu principal, est-ce réalisable aussi simplement?
Juste un petit peu plus...
Bonjour,
Est il possible d'afficher (simplement) le menu horizontalement en utilisant cette méthode ?
Merci.
Styliser l'élément du menu sélectionné.
Bonjour,
Merci pour cette article bien utile.
J'essaie maintenant de styliser l'élément menu avec une classe "selected".
foreach($menuItems as $key => $m) {
//check current active menu
if ($m['link']['in_active_trail'] && $menuItems [$key]['below']) {
$m['link']['options']['attributes']['class'] = 'selected';
$menu = menu_tree_output($menuItems [$key]['below']);
}
}
La classe n'est pas affectée. Avez-vous une idée pour régler ce problème ?
Merci
Probleme de fonctionnement
Bonjour,
J'ai suivi a la lettre ce tuto, lorsque je clique sur un de mes liens primaires, rien ne se passe...
j'ai l'impression que le code php n'est pas pris en compte, j'ai bien sélectionné php dans 'format entrée" et coller le code php dans "corps du bloc", avez vous une idée pour résoudre ce souci ?
j'utilise drupal 6 avec le theme ZEN.
Romann
Pour tous ceux sous drupal 7
Pour tous ceux sous drupal 7 voir ce module : http://drupal.org/project/menu_block
Poster un nouveau commentaire