Gestion des menus avec drupal 4.7

But : obtenir une hiérarchie de pages accessibles via les liens primaires.

- Accueil
- L'association
-- Statuts
-- Membres
- Projets
-- Connectez-vous
- Liens
- Contact

Prenons l’exemple ci dessous :

Nous y voyons en haut un menu contenant 5 liens qui sont : Accueil, L’association, Projets, Liens, Contacts. Le menu utilisé est celui appelé Primary links ou Liens Primaires en Français. Grâce à cela nous auront la possibilité d’afficher notre menu dans le thème de notre site.

Premier exemple : le lien Accueil

Le lien Accueil pointe tout simplement sur la page d’accueil. Pour le créer, nous allons dans administrer/menu, puis on va cliquer sur ajouter un élément de menu

On se retrouve alors avec le formulaire suivant :

  • Titre : le titre de notre élément (dans notre exemple «Accueil»)
  • Description : texte affiché grâce à une bulle d’aide lors du passage de la souris au dessus du lien
  • Chemin : le chemin vers lequel le lien pointera (dans notre exemple <front> renvoi vers la page d’accueil)
  • Elément parent : informe de l’endroit où notre lien sera mis. Nous souhaitons qu’il soit dans le menu «Primary Links»
  • Poids : permet de définir l’ordre d’apparition des éléments du menu. Dans l’exemple les éléments Accueil, L’association, Projets, Liens et Contacts sont tous contenu directement dans Primary links (ils ont tous le même parent). Le poids permet donc de définir l’ordre dans lequel ils doivent apparaître. Dans le cas contraire, l’ordre alphabétique est privilégié

Il ne nous reste plus qu’à cliquer sur le bouton Soumettre

L’élément Contact à été crée de la même manière. Nous avons mis Contact dans le champ «Titre» et contact dans le champ «Chemin» (le formulaire de contact est habituellement accessible via l’URL http://monsite.com/?q=contact)

Deuxième exemple : l’élément L’association

L’élément L’association est une page crée avec drupal et que l’on va ancrer dans le menu Primary links. Pour cela allons dans créer un contenu/page Nous nous retrouvons alors avec le formulaire classique de création de contenu que nous allons remplir de manière classique. Nous allons aussi nous intéressé au bloc Paramètres de menu (cliquez sur le lien pour ouvrir le bloc si ce n’est pas déjà fait). Et là, ho surprise nous retrouvons exactement le même formulaire que dans notre premier exemple.

  • Titre : L’association
  • Description : Le Mans Sans Fil
  • Elément parent : Primary links
  • Poids : 1 (nous voulons que le liens s’affiche après «Accueil» qui a un poids de 0)

Les éléments Projets et Liens ont été crée de la même manière. Nous obtenons donc le menu suivant :

- Accueil
- L'association
- Projets
- Liens
- Contact

Troisième exemple : les éléments de second niveau (ou sous-menus)

Nous allons crée une nouvelle page comme précédemment, nous rendre ensuite dans le bloc Paramètres de menu, mettre le titre, la description, et choisir comme Elément parent L’association

Et voilà ! nous avons notre premier sous-menu. Nous pouvons faire de même avec d’autres pages, ou même encore faire des sous-sous-menus…

Afficher les menus dans bloc

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.