Submitted by alkahan on
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.
Deuxième méthode :
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.
Commentaires
J'ai suivi la méthode
Permalien Soumis par Leylou85 le 25 Septembre, 2009 - 13:56
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 ^^) :
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
Pour le moment cette page de
Permalien Soumis par ineation le 25 Septembre, 2009 - 17:22
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
Ok, je m'en occupe et je te
Permalien Soumis par Leylou85 le 25 Septembre, 2009 - 18:56
Ok, je m'en occupe et je te tiens au courant.
Alix Casari.
www.reprise2Style.fr
bonjour, je debute avec
Permalien Soumis par sms le 20 Novembre, 2010 - 12:29
bonjour,
je debute avec drupal et j'ai vraiment du mal a comprendre le mecanisme de personnalisation de menu.
si je comprend bien le deuxieme argument de la fonction theme est la fonction definie dans le tuto. alors ou defini tu cette fonction a présent?
si tu pouvais m'expliquer certaine fonctions qui me semble basique dans la gestion du contenu d'un site drupal ca m'aiderait beaucoup.(je parle de fonction telque theme_preprocess_page(&$variables),theme_links etc)
merci.
Bonjour, En fait, le
Permalien Soumis par Leylou85 le 24 Novembre, 2010 - 14:26
Bonjour,
En fait, le deuxième argument de la fonction theme n'est pas une fonction 'définie' dans le tuto, elle est appelée. C'est une fonction fournie par drupal qui retourne sous forme de liens toutes les entrée du menu secondaire.
A toi ensuite de préciser à la fonction theme (de drupal) les attributs CSS (class, id) que tu souhaites ajouter pour pouvoir personnaliser dans le theme (fichier style.css) l'affichage de ce sous-menu.
Pour le reste, je n'ai jamais eu besoin d'utiliser les fonctions comme theme_preprocess_page ou theme_links donc je ne pourrais pas te renseigner, désolée.
En espérant t'avoir aidé...