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

  • Hello RastaPopoulos

    J’ai remarqué un petit truc gênant avec l’item « se connecter » :
    Le paramètre url est ajouté à l’url pour que spip retourne sur la page d’origine. OK.
    Par exemple, le lien « se connecter » sur la page d’acceuil : https://www.monsite.com/spip.php?page=login&url=./

    Donc on est dabord redirigé vers la page de connexion. Mais si on regarde l’item « se connecter », on voit que la paramètre url a été ajouté une 2e fois :
    https://www.monsite.com/spip.php?page=login&url=spip.php&page=login&url=./

    Et si on reclique sur « se connecter » une nouvelle fois, cela ajoute une fois de plus url :
    https://www.monsite.com/spip.php?page=login&url=spip.phppage=login&url=spip.php%253Fpage%253Dlogin%2526amp%253Burl%253D.%25252F

    etc. etc.

    C’est vrai, l’utilisateur n’y voit que du feu.
    Mais je me demande ce que cela induit au niveau des robots des moteurs de recherche ?

    Je m’en suis rendu-compte en auditant un de mes sites avec Xenu. J’ai obtenu des milliers d’erreurs car au bout d’un moment l’url est trop longue.

    Cela ne devrait pas être très difficile à corriger ? un petit test à ajouter ?

    En tous cas MERCI pour ce très bon plugin.

    Répondre à ce message

  • 2

    Bonjour

    Pas eu le courage de lire les 280 pages de commentaires...
    Je viens d’installer votre chouette plugin et je l’utilise de manière très basique. Les rubriques en horizontal, et, en vertical, les articles des rubriques.
    Mais pourquoi donc ne respecte t il pas l’ordre des numéros de rubrique et d’articles ?

    Quand je mets num titre (ou l’inverse) j’obtiens
    Rubrique 1 Rubrique 4 Rubrique 3 Rubrique 2, (ou l’inverse) ce qui n’a pas de logique ?

    idem pour les articles, avec num titre ou l’inverse :
    article 21
    Article 20
    article 23
    article 22

    J’ai vidé le cache, recalculé la page etc... je ne comprends pas ?!

    Merci de votre aide.

    Elisabeth

    • num titre, c’est pas l’identifiant de base de données, qui n’est pas au choix, c’est pour classer par ordre alphabétique en prenant en compte les numéros de contenu qui seraient ajoutés dans les titres : « 10. Ma première rubrique » / « 20. Ma deuxième rubrique » / etc.

      Pour aider un peu, il y a un plugin qui aide à la re-numérotation rapide : Numérotation rapide

    • Ah ok !
      Je ne savais pas qu’on pouvait rajouter des numéros sans que cela s’affiche.
      Parfait !!
      Merci beaucoup !

      Elisabeth

    Répondre à ce message

  • 2

    Bonjour,
    j’aimerai bien ajouter

    |parametre_url{lang,#ENV{lang}}

    aux liens du menu. Est-ce qu’il y aurait un moyen pour ce faire ?
    merci d’avance
    joz

    • Ah moi aussi j’ai voulu avoir ça une fois (mais pour une unique entrée, plus chiant…) mais à part surcharger l’entrée (menus/truc.html) je ne vois pas comment pour l’instant. Ou alors en javascript…

    • merci pour la réponse.
      allons pour la surcharge alors..

    Répondre à ce message

  • 1
    Julien Cadoret

    Bonjour,
    j’utilisais ce plugin sans problème depuis plusieurs mois, j’ai voulu rajouté un article dans le menu et depuis plus rien. Impossible même de recréer un menu.
    le message d’erreur suivant s’affiche : « Il y a une erreur dans les paramètres de la page ».

    j’ai tenté de réinstaller le plugin mais rien n’y change
    Que faire ?
    Merci.

    Spip version 2.1.

    • Je ne saurais pas répondre, en tout cas avec SPIP 3 et une version de PHP à jour, le plugin fonctionne. Je n’ai pour l’instant pas de vieux SPIP sous la main pour tester sur l’ancienne version, ni de PHP autre que récent.

      Pour voir plus d’erreur il faudrait peut-être activer l’affichage des erreurs PHP. Peut-être que ça afficherait plus que l’erreur générique évoquée.

    Répondre à ce message

  • 3

    Bonjour,
    J’utilise ce plugin dans tous mes sites, une merveille :)
    Je voudrais une info bulle telle que

    #INTRODUCTION


    J’ai mis le plugin Liens explicites, il a une action sur certains thèmes de Zpip et pas d’autres.
    J’imagine donc que ce n’est pas dans le plugin menu que ça se passe ?
    Merci beaucoup.

    • Si tu veux ajouter une infobulle (à priori avec title=« truc »), il faut forcément surcharger le ou les squelettes des types d’entrée utilisés pour l’ajouter aux balises de lien, parce que le plugin ne fait pas ça (et il faut aussi savoir que title c’est pas super niveau accessibilité, il vaut mieux faire des bulles ajoutées en JS en prenant le contenu autre part, mais dans tous les cas ça revient au même il faut forcément surcharger pour ajouter le INTRODUCTION quelque part).

    • Et avec le plugin Liens explicites, alors je peux faire comment ?

    • Le plugin Liens explicites ce sont juste des styles CSS, or le plugin Menus ne s’occupent pas du tout de CSS, il ne fait que générer le HTML de ce qu’on a construit dans l’interface avant. Donc à priori le problème vient d’ailleurs (d’autres CSS qui empiètent ou cassent les mêmes styles).

    Répondre à ce message

  • 2
    jacques83300

    Bonjour,

    Super utile ce plugin !
    J’ai une petite question : lorsque je crée un menu avec une liste ou une arborescence de rubriques et d’articles de la rubrique courante, il affiche d’abord les sous-rubriques et ensuite les articles de la rubrique courante. En espérant pouvoir mélanger dans le menu des articles et des rubriques j’ai numéroté chaque titre sans utiliser 2 fois le même numéro.
    Exemple :
    10. article 1
    20. rubrique 1 (avec articles)
    30. article 2

    Le menu obtenu est toujours :
    >rubrique 1
    >article 1
    >article 2

    Alors que je souhaite obtenir :
    >article 1
    >rubrique 1 (avec articles)
    >article 2

    Quelqu’un a-t-il une idée de la manière de faire ? Merci d’avance pour votre assistance.

    Cordialement,
    Jacques

    • Ce n’est pas propre à ce plugin mais à n’importe quelle boucle de SPIP. Ça n’existe pas de pouvoir mélanger plusieurs contenus différents dans une même boucle, dans SPIP, à moins de faire des bidouilles assez tordues. Donc non ça n’existe pas par défaut dans ce plugin, désolé.

    • Pour le menu, Je me sors de cette situation avec une astuce :

      j’utilise la fonction redirection d’article (article virtuel). Pour ce cas, j’ajouterais un article virtuel

      10. article 1
      20. ARTICLE VIRTUEL vers la rubrique « rubrique 1 (avec articles) »
      30. article 2

      Si tu ne veux pas que l’article virtuel apparaisse avec les autres articles, mais qu’il soit utilisé seulement dans le menu : je crois que le menu affiche même les articles en « cours de rédaction ». Du coup tu pourrais faire un article virtuel avec le statut « en cours de rédaction » qui ne sera pas pris en compte dans les autres boucles du site, mais dont le titre apparait quand même dans le menu.

      Sinon, publie l’article en ligne, donne lui le nom de la rubrique, et voilà, la rubrique apparaitra mélée aux articles.

      Par contre, tu ne pourras pas dans le menu avoir un sous-menu de la rubrique en question avec les articles qu’elle contient (puisqu’il s’agit d’un article virtuel). Mais ainsi tu gardes la création dynamique du menu sur le premier niveau.

    Répondre à ce message

  • 2

    Bonjour,

    Je viens de changer le squelette de mon site : j’ai maintenant Einsteinumist et j’ai également installé zpip et menus. Je cherche à personnaliser les menus. J’ai suivi les consignes de cette page sur la création de l’entrée « barre de navigation », mais quand je la crée, j’ai la fatal error suivante :

    Fatal error : Call to undefined function menus_lister_disponibles() in /mnt/110/sdb/3/2/thomas.arles/plugins/auto/menus_1/formulaires/editer_menus_entree.php on line 31

    Je remarque que le lien n’est pas bon, puisque la racine de mon site est thomas.arles.free.fr

    Est-ce dû à ça ? Comment y remédier ?

    Merci d’avance.

    J’utilise spip3.017

    • Tu dois avoir une installation bizarre parce que la fonction menus_lister_disponibles() est dans « inc/menus.php » qui est chargé au tout début de « formulaires/editer_menus_entree.php ». Donc soit il te manque des fichiers, soit il y a des problèmes de droits qui font que le fichier ne se charge pas, peut-être…

    • Merci, c’était bien dû à l’installation des fichiers sur le serveur. ça marche maintenant ! :)

    Répondre à ce message

  • 4
    Didine

    Bonjour,

    Une petite question de débutante.
    J’utilise spipr avec bootstrap et le plugin menus.
    Le menu s’affiche mais pas possible de faire un dropdown sur une rubrique contenant des sous-rubriques, la liste reste entièrement affichée.

    Que dois-je modifier dans menus ?

    Merci pour vos conseils.

    • Rien. :)

      Tout ça n’entre pas dans le périmètre de ce plugin. Celui-ci se borne uniquement à permettre aux gens de gérer des menus dans une interface puis de produire le HTML correspondant aux menus configurés. Tout le reste est du ressort du thème graphique ou autres ajouts de comportements javascript.

      Donc il n’y a rien à « modifier dans menus ». Il faut voir ça avec les CSS et JS utilisé.

    • Salut,
      malheureusement on ne peut pas ajouter une class à l’« ul » du sous-menu, uniquement au « li ».
      Avec une classe « dropdown » sur l’ul ça serai façile..
      ..
      joz

    • non sorry, qu’est-ce que je raconte.. c’est sur le « li » du premier niveau qu’il faut le dropdown.. pas sur le sous-menu

    • Le plugin Bootstrap a déjà un petit script JS de quelques lignes qui ajoute les bonnes classes au bon endroit :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/bootstrap/trunk/bootstrap2spip/js/menu.dropdown.js

      Il suffit donc de l’inclure dans son head html.

      (sur un menu .navbar, si on a un autre nom, il suffit de le réécrire pour son cas)

    Répondre à ce message

  • 8

    Bonjour , il y a un soucis grave avec cette dernière version du 05/07/2015 : tous les articles apparaissent dans les menus, sans pouvoir l’annuler !!

    • en plus sur mon site c’est la V1.5.10 qui ne figure pas ici .....quelle gestion des versions ?

    • SVP où la dernière version stable avant la 1.5.9/10 ? Il ne fonctionne plus du tout après l’upgrade de ce matin.

    • J’ai retrouvé sur un de mes sites non upgradé une v1.5.5 de Menus je l’ai remise et ai refait le menu « barrenav » et cela remarche à court terme (c’est un site en v3 avec Squelette Maparaan
      1.0.0) sur un autre site, je n’ai pas de soucis avec la dernière 1.5.9/10 (=on installe votre v1.5.9 et il s’affiche 1.5.10).
      Sur le site avec Maparaan, en faisant le nettoyage, j’ai vu passer une ancienne 0.9.x qui était sur un rep /pluging au temps d’avant (1.9) où il n’y avait pas « auto », peut-être le soucis venait de là avec un vieux fichier de config.
      On reverra cela plus tard à votre mise à jour suivante plus propre j’espère. ;-)

    • Bonjour,

      Moi aussi j’ai ce problème d’articles qui s’affichent même s’ils ne sont pas paramétrés dans la config du menu.. donc je repasse à la version Menus 1.5.9
      Le site est en SPIP 3.0.20 et a été créé e 3.0.19 et donc pas d’antériorité du plugin menus avant la 1.5.9

      dd

    • Bonjour
      Même probleme de configuration de menu avec la version 1.5.10. La configuration du menu semble bien se passer, mais les rubriques volontairement oubliées à la configuration apparaissent. Avec configuration ou sans configuration du menu, toutes les rubriques apparaissent.

    • ...
      En fait, il faut pas utiliser de chiffre dans le titre d’une rubrique (du moins pas en tete), en supprimant le chiffre (1. bla ou 2. bli) le probleme est résolu.
      Cdt

    • Le problème est résolu depuis hier surtout parce que la dernière modif avait introduit un bug et tout a été remis en arrière hier soir. Donc retour à la normal à priori.

    • Ok - TB - Merci RastaPopoulos

    Répondre à ce message

  • 1

    Bonjour,

    Sur un site multilingue, j’ai besoin d’afficher un menu différent par contexte de langue, la liste des rubriques n’étant pas totalement identique selon les langues.

    J’ai tenté :

    [(#INCLURE{fond=inclure/menu, env, lang=fr , identifiant=barre_nav})]
    [(#INCLURE{fond=inclure/menu, env, lang=pl , identifiant=barre_nav_pl})]

    et j’ai tenté aussi :

    <INCLURE{fond=inclure/menu, env}{lang=fr} {identifiant=barre_nav}></INCLURE>
    <INCLURE{fond=inclure/menu, env}{lang=pl} {identifiant=barre_nav_pl}></INCLURE>

    Mais, dans un cas dans l’autre, les 2 #INCLURE s’affiches, alors que je m’attendais à ce que seul celui correspondant au critère « lang=" s’affiche !

    Faut-il d’abord utiliser #GET pour récupérer la langue ?
    Ou alors (#ENVlang) ?

    j’ai essayé aussi l’option "Sélecteur de langue", sauf que ayant une couleur différente par grande rubrique, je suis bloqué car il n’y a pas de possibilité d’entrer une CSS contrairement l’option "Article, rubrique ou autre objet SPIP"

    voilà l’URL d’un prototype de ce site avant passage en multiligue :
    http://proto3.reflexwebstudio.fr/

    Une idée ?

    Merci d’avance

    • RÉSOLU : Grâce à la réponse de Teddy sur la liste spip@rezo.net

      La solution :

      Identifiants des deux menus : barre_nav_fr et barre_nav_pl

      ce qui donne pour l’inclusion du menu :
      #INCLURE{fond=inclure/menu, env, identifiant=barre_nav_(#ENV{lang})}

    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