Nous venons de créer une hiérarchie d’éléments contenus dans le menu Primary links. C’est bien, mais ce qui est encore mieux c’est de les afficher dans un bloc. En effet même si nous pouvons afficher le menu Primary links sur notre site, grâce à notre thème, nous ne pouvons pas accéder aux sous menus.
Première méthode :La première méthode est la plus simple à mettre en place car elle fait appel à un bloc qui est fourni par drupal.
Nous nous rendons dans administrer/blocs et nous activons le bloc Primary links en cochant la case.

Nous obtenons alors un bloc contenant notre hiérarchie et laissant entrevoir les sous-menus.

Cette deuxième méthode tiens compte du fait que l’on peut déjà afficher le premier niveau de notre menu par l’intermédiaire du moteur de thème (et de la variable $primary_links pour PHPTemplate). En effet si le premier niveau de notre menu est affiché, à quoi sert il de les afficher à nouveau dans notre bloc. Nous voulons que lorsque nous nous trouvons sur une page de premier niveau, un bloc affiche uniquement les sous menu de cet élément.

Pour obtenir ce résultat rendons nous dans la page d’administration des blocs (administrer/blocs) puis cliquer sur ajouter un bloc. Nous arrivons sur le formulaire de cration d’un bloc, et nous aloons remplir le corps avec le code php suivant :
<?php
$secondary_links = menu_secondary_links();
if (is_array($secondary_links)) {
$output = "<ul class=\"menu\">";
foreach ($secondary_links as $link) {
$output .= "<li class=\"leaf\">".$link."</li>";
}
$output .= "</ul>";
}
return $output;
?>remplissez les autres champs (Description, titre) et sélectionnez PHP Code comme format d’entrée. Il ne reste plus qu’à valider et à activer le bloc.

Il reste une denière chose à faire : s’assurer que les paramètres des menus sont correcte. En effet pour afficher notre bloc, nous faisont appel aux liens secondaires. Nous devons, pour obtenir le comportement voulu, configurer les liens secondaires de sortes qu’ils soient des sous menus des liens secondaires. Nous allons donc dans administer/paramètres/menus et mettre le champs Liens secondaires comme sur la capture.

- Version imprimable
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

J’ai suivi la méthode décrite pour afficher les enfants du menu primaire dans un bloc situé dans la colonne gauche de mon site mais il affichait toujours ‘Array’ :( En cherchant un peu, j’ai compris que la variable $link est effectivement une matrice (array en anglais…) contenant les titres et les liens des dits enfants.
Après pas mal d’essais et de recherches supplémentaires, j’ai fini par remplacer le code du bloc par celui-ci (qui marche ^^) :
<?phpreturn $secondary_links = theme('links', menu_secondary_links(), array('class' => 'leaf', 'id' => 'secondary-menu'));
?>
Reste plus qu’à écrire le code CSS de l’id ‘secondary-menu’ pour l’afficher comme on veut ;)
«La patience a beaucoup plus de pouvoir que la force» - Plutarque
Leylou85
5
Pour le moment cette page de doc est marquée comme obsolète. Si tu veux la corriger et me valider que cela marche pour D6 alors je peux la remonter dans un chapitre plus adéquat.
Alexandre Eisenchteter www.ineation.com www.twitter.com/ineation
Alexandre Eisenchteter www.ineation.com www.twitter.com/ineation
ineation
192
Ok, je m’en occupe et je te tiens au courant.
Alix Casari. www.reprise2Style.fr
Leylou85
5