Afficher un menu sous Drupal 7

Poteau indicateur

D'une manière générale, pour lire un menu (créé depuis l'interface d'administration, chemin admin/structure/menu/add) et l'afficher, il faut utiliser la fonction menu_navigation_links pour le lire, et la fonction theme pour l'afficher.

Le code suivant, inséré dans la page page.tpl.php de votre thème affichera le menu intitulé Personnel et dont le nom machine est menu-personnel.

<?php
$menu = menu_navigation_links('menu-personnel');
print theme('links__menu_personnel', array('links' => $menu));
?>

Il n'est pas recommandé d'utiliser cette fonction directement depuis le fichier page.tpl.php, mais de définir les variables dans le fichier template.php de votre thème, puis d'imprimer cette variable via votre fichier page.tpl.php.

Il faut utiliser la fonction MON_THEME_preprocess_page. Dans l'exemple ci-dessous nous allons lire et afficher pour les visiteurs non authentifiés le menu dont le nom est Favoris (nom machine : menu-favoris) et l'afficher de la même manière que le menu secondaire (i.e. avec les mêmes classes). On peut bien sûr modifier les classes css selon ses besoins.

function MON_THEME_preprocess_page(&$vars) {
if (user_is_anonymous()) {
  $menu = menu_navigation_links('menu-favoris');
  $vars['menu_mes_favoris'] = theme('links__menu_favoris', array(
    'links' => $menu,
    'attributes' => array(
      'class' => array('links', 'inline', 'secondary-menu'),
      ),
     'heading' => array(
      'text' => t('Secondary menu'),
      'level' => 'h2',
      'class' => array('element-invisible'),
      )
    ));
}
Else {
  $vars['menu_mes_favoris']=FALSE;
}

}

Nous pouvons alors afficher ce menu depuis la page.tpl.php

<?php if ($menu_mes_favoris): print $menu_mes_favoris; endif; ?>

Source : How to print a menu in Drupal 7 ?

Ajouter un commentaire