Menus

Créez enfin vos menus facilement !

Introduction

Lorsqu’on ne se sert pas du plugin ’Menus’, on est obligé de définir tous ses menus dans les squelettes, ce qui fait que l’administration du site n’a pas directement la main dessus, lorsqu’un changement est nécessaire, il faut en faire la demande à la personne en charge des squelettes.

De plus, lorsqu’on veut des liens statiques (un lien vers un article précis, ou vers une page précise, ou vers un site externe) il faut les écrire en dur dans le squelette du menu.

Le but du plugin ’Menus’ est donc de permettre de facilement élaborer des menus au moyen d’une interface conviviale, directement dans la partie privée.

Attention ! Ce plugin ne s’occupe pas de la manière dont seront affichés les menus. Il permet de les créer facilement et d’en générer le HTML.

Pour l’affichage, voyez avec votre thème ou des plugins spécifiques tels que Menu animé déroulant, Menu Déroulant 2, Menu Accordéon 2 ou Menu jQuery Superfish.

Installation

Comme n’importe quel plugin.

Création d’un menu

Le plugin ajoute un lien dans le bandeau de SPIP :

Capture d'écran de l'ffichage du plugin menu dans le menu de l'espace privé de SPIP.

La page liste tous vos menus, et vous propose d’en créer un nouveau :

D’abord vous devez identifier votre menu. Il faut lui donner un titre, ainsi qu’un mot-clé qui vous permettra de l’appeler facilement. En effet, vous ne pouvez pas prévoir à l’avance dans vos squelettes le numéro du menu. Grâce à ce mot-clé identifiant, vous n’avez donc pas à modifier vos squelettes à chaque fois. Vous pouvez également saisir une classe qui sera ajoutée au premier élément ul du menu généré. Ceci peut permettre d’activer la gestion de l’affichage par un plugin tiers.

Vous pouvez alors commencer à construire le menu en ajoutant des entrées :

Les différents types d’entrées

Les Menus sont fournis pour l’instant avec plus de dix types d’entrées qui permettent déjà de construire la plupart des menus facilement.

N’hésitez pas à en proposer d’autres !

Voici la description de quelques uns des types d’entrées disponibles :

-  Lien arbitraire : vous pouvez créer des liens vers ce que vous voulez en donnant une adresse et un titre.

-  Objet de SPIP : crée un lien vers n’importe quel objet éditorial de SPIP. Ça peut être un article, une rubrique ou n’importe quoi venant d’un plugin.

-  Liste dynamique de rubriques et d’articles : vous pouvez afficher les rubriques de SPIP, y compris de manière arborescente. Pour cela, il suffit de définir la rubrique dans laquelle il faut commencer la liste, le niveau maximum de sous-rubriques, les exclusions éventuelles, le type de tri... Vous pouvez aussi inclure les articles dans l’arborescence, limiter leur nombre, en gérer le tri...

Détails des options d’une entrée de menu : Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)

Modification des entrées

Lorsque vous avez déjà ajouté des choses, vous obtenez alors la liste des entrées sous cette forme :

Vous pouvez alors déplacer les entrées pour modifier leur ordre, les supprimer, changer leurs paramètres et créer des sous-menus en-dessous des entrées qui le permettent.

Utiliser les menus dans votre site

Pour afficher un menu dans votre site, il vous suffit d’inclure un petit squelette où vous le désirez :

#INCLURE{fond=inclure/menu, env, identifiant=<votre_menu>}

Vous pouvez aussi tester votre menu facilement en cliquant sur le bouton « Voir en ligne » ou en allant sur la page : spip.php?menu<numero>

Exporter les menus vers un autre site

Imaginons que sur une version de votre site en local vous réorganisez tous les menus. Pour reporter ces changements en prod, il faut exporter les menus dans un fichier et les réimporter en prod.

S’assurer tout d’abord que le plugin Yaml est activé .

Lorsqu’il est activé une icône apparaît : exporter ce menu

Le sauvegarder sur votre ordinateur

Sur le site de destination, il suffit de créer un nouveau menu avec le même identifiant (penser à le supprimer avant s’il existe). Et à la création, si le plugin YAML est bien activé, la boite de choix de fichier est proposée.

Surcharge des fichiers menus/<type>.html

Si pour des besoins particuliers, on doit surcharger un fichier du répertoire menus/, il ne faut pas oublier de copier le fichier XML de description qui va avec.

En effet, le plugin cherche le fichier XML au même endroit que le fichier HTML.

Discussion

354 discussions

  • 2

    Je verrais bien l’ajout de la fonction supprimer_numero aux #TITRE...

    ou alors en option....ça pourrais-être pas mal !

    • en fait c’est possible d’automatiser la suppression de numéro en ajoutant dans mes_options.php

      $GLOBALS['table_des_traitements']['TITRE'][]='typo(supprimer_numero(%s),"TYPO",$connect)';
      $GLOBALS['table_des_traitements']['NOM'][]='typo(supprimer_numero(%s),"TYPO",$connect)';
      $GLOBALS['table_des_traitements']['TYPE']['mots']='typo(supprimer_numero(%s),"TYPO",$connect)';
    • il me semble que le filtre supprimer_numero est appliqué partout d’office dans spip 2.0.10 Donc dans Menu aussi

    Répondre à ce message

  • 1

    Salut Rastapopolos :-)

    Je crois avoir trouver une coquille, dans le fichier menus_installation.php
    http://zone.spip.org/trac/spip-zone/browser/_plugins_/menus/base/menus_installation.php?rev=35505

    Je pense qu’il faudrait ligne 27, mettre 0.8.1 au lien de 0.5 car dans le cas d’une instal neuve, apparait à gauche de la liste des plugs au dessus de cfg les méssages :
    Installation du plugin menus
    Mise à jour du plugin menus en version 0.5

    Le lien « derniere modification » de l’article poite vers http://zone.spip.org/trac/spip-zone/log/_plugins_/menus?rev=30973
    au lien de :
    http://zone.spip.org/trac/spip-zone/browser/_plugins_/menus?rev=35505

    • Non c’est parce qu’il y a une différence entre la version du plugin et la version de la base de données utilisée par le plugin. Les tables du plugin n’ont pas bougées depuis la version 0.5.

      Faudrait juste reformuler ça autrement.

    Répondre à ce message

  • 2

    Hello,

    Merci pour ce plugin
    Je ne comprends pas l’intérêt des sous-menus.
    Avec ZSpip, y a t il des menus déroulants ??

    • On rappelle donc le fonctionnement :

      • Zpip c’est juste un squelette, ça ne s’occupe pas vraiment de comment les choses vont s’afficher.
      • Ce sont les thèmes qui définissent vraiment l’affichage final.
      • Certains thèmes supportent les sous-menus dans la barre de navigation, d’autres pas.

      Arclite par exemple marche très bien avec des sous-menus.

      Sinon on peut aussi faire son propre thème et donc gérer les sous-menus comme on le désire. Ou bien améliorer un thème existant qui ne gérait pas les sous-menus, et ensuite proposer son amélioration pour qu’elle profite à tout le monde. :)

    • Thanks,

      J’en ai essayé beaucoup mais pas Arclite ...
      Je va donc me pencher sur la question ;-))

    Répondre à ce message

  • 2

    j’ai fait quelques modif’s afin d’ajouter des class css comportant le niveau de sous menu de chaque éléments... pour les menus un peu complexes.

    menu-entre et menu-entree-nivX, de même, menu-liste et menu-liste-nivX

    Peut-on ajouter ça ds le plugin ?

    • Pourquoi pas, à priori ça ne casse rien et ça ajoute une info supplémentaire. Même si je vois pas trop l’intérêt vu que pour le nombre de niveau on va plutôt utiliser le principe des cascades en CSS .menu-entree .menu-entree .menu-entree (3e niveau ici).

      Est-ce vraiment nécessaire ? Car même si ça casse rien ça ajoute du code. Tu peux donner un ou des exemples pour lesquels tu as besoin de ça ?

    • hé ben tout simplement parce que j connaissait pas le principe des css en cascades...

      j vais donc regarder sans cette magouille .. j regarde ça ce soir !

    Répondre à ce message

  • 1

    bonjour, j’ai voulu tester un menu avec la ligne indiquée dans l’article, mais la réponse est une erreur 404, avec en debug :

    Erreur(s) dans le squelette
    1  	Aucun squelette 'test_menus.html' n'est disponible... 	
    2  	Erreur de compilation

    J’ai retesté avec le menu barrenav, qui marche très bien, idem.

    ...rie.free.fr/spip/spip.php?page=test_menus&identifiant=barrenav

    et effectivement, pas trace de ce squelette sur mon site.
    Qqun a-t-il eu le même problème ? Je suis sur Free, spip 2.0.10, zpip1.2.1, menus 0.8.1

    • J’ai modifié car c’était un vieux truc.

      Comme vous pouvez le voir dans l’interface même d’édition d’un menu, il y a un beau lien « Voir en ligne ». C’est plus direct et vous êtes sûr de ne pas vous tromper.

    Répondre à ce message

  • 5

    Bonjour,
    Je suis sur une install de SPIP + Zpip, tout va bien j’ai suivi l’article ad’hoc.
    Sauf que lorsque je veux créer un menu, j’ai un beau

    « Accès interdit »

    Dans les log privé j’ai çà :

    Feb 12 18:54:16 213.244.2.19 (pid 28795) spip_register_globals(1)
    Feb 12 18:54:16 213.244.2.19 (pid 28795) Sébastien COLLET menus_editer : Accès interdit / acidcrea/ecrire/ ?exec=menus_editer&nouveau=oui
    Feb 12 18:54:16 213.244.2.19 (pid 28795) alea_ephemere_ancien indisponible

    ça dit quelque choses à quelqu’un ?

    Note : Je suis chez OVH, en mutualisé, Spip + plugins dans leurs toutes dernières version.

    Merci !

    Répondre à ce message

  • 1

    doit y avoir un ptit bug.... (heu... p être corrigé par la suite... je ne sais pas j’ai la révision 35116 qui marche avec 2.0 :p )

    le code HTML généré est pas bon... quand on a un article dans le menu il ne ferme pas correctement la balise <li> ..... il met un <li> à la place d’un </li>

    • heu... oups....non ....pas de bug de HTML ...
      c’est moi qui ai fait un ch’tit bug.... ça marche bien en fait !

    Répondre à ce message

  • Ok merci bien :-)
    A priori le code généré est réglo côté html.
    Fallait bien mettre les mains dans le cambouis un jour ou l’autre ;-)

    Répondre à ce message

  • 1

    Hello.

    J’ai un soucis d’affichage du menu : quand il y a des rubriques et articles c’est ok, par contre si j’ai une rubrique, avec des sous rubriques et des choses en dessous, l’affichage ne fonctionne plus du tout.

    C’est à dire qu’au lieu de déplier la sous rubrique seulement quand on passe dessus avec la souris, le menu est déplié intégralement quand on passe sur la rubrique globale, ce qui fait que ça ne resemble à rien.

    Peut-etre y-a-t’il déjà un patch pour cela ?

    Pour info j’utilise le plugin multiflex 3, mais à priori ça change rien au problème non ?

    En PJ le menu côté admin, et le rendu coté public.

    • À priori ça n’a rien à voir avec le plugin Menus, et pour cause : il ne s’occupe d’absolument aucun affichage.

      Dans un premier temps il faudrait vérifier que le code HTML généré est correct, c’est-à-dire une suite de listes imbriquées lorsqu’il y a des sous menus. Pour ça, soit vous regardez le code de votre page, soit vous faites « Voir en ligne » dans l’interface de création du menu, ce qui vous amènera à une prévisualisation brute (sans aucun style) du menu.

      Si le HTML est correct, et j’espère que c’est le cas, alors c’est que le plugin Menus fait bien son travail.

      Le reste est à voir dans le thème de votre site, comment y est géré l’affichage des menus en cascade dans ce squelettes ou thème, les styels CSS et/ou javascript, etc.
      Mais ce n’est plus du ressort de ce plugin. :)

    Répondre à ce message

  • 3

    Bonjour et Merci pour ce superbe plugin !

    Je viens d’installer Zpip avec ce plugin et j’essaye de le peaufiner pour le multilinguisme. (Il manque plus grand chose ;) )

    Pour le menu Plugin, y a t’il une astuce connue pour l’avoir en multilingue ?

    Pour le titre pas de problème avec le bloc multi :

    <multi>[fr]Titre[en]Title</multi>

    Ça marche très bien, par contre pour le lien (exp vers article 1 en [fr], article 2 en [en]), j’ai tenté

    Type de l’objet : article

    Numéro : <multi>[fr]1[en]2</multi>

    Mais ça prend pas.

    Est ce que quelqu’un a une idée ?

    A bientôt et bonne année à tou-te-s !.

    • Pour créer un menu multilingue j’ai réussi en ajoutant un filtre {lang} dans la boucle du squelette de l’entrée « rubrique » (menus/menus/rubriques.html) :

      <BOUCLE_rubriques(RUBRIQUES){id_parent=#GET{id_rubrique}}{lang}{par num #GET{tri_num}}{par #GET{tri_alpha}}>

      Dans le menu je met côte à côte les sous-rubriques FR et EN, seules celles de la langue du site s’affichent.

      Mais je n’ai pas réussi à faire la même chose pour les autres types d’entrées (objets spip par exemple). Une solution ?

      Est-ce qu’il y a un moyen d’afficher le titre du menu avant la liste des entrées ?

    • Bonjour,

      Je voulais savoir comment intégrer un critère
      {lang}
      pour les éléments du menu. C’est possible pour la liste de rubriques car elle est gérée par une boucle mais comment faire pour les autres (objet spip par exemple ?)

      Merci de votre aide.

    • Pour l’instant il n’y a pas de solution pour le type « objet » générique. Une idée pourrait être de lui ajouter comme option un paramètre « Langue » et de n’afficher alors cet élément que si le visiteur est dans la langue définie.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom