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 les administrateurs du site n’ont pas directement la main dessus, que lorsqu’ils veulent y changer quelque chose, ils sont obligés d’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

Menus (0.9.5)
Menus (1.7.25)

Télécharger le paquet ZIP du plugin et placer son contenu dans votre répertoire “plugins/”. Activez-le ensuite dans la page de gestion des plugins.

Vous devez aussi avoir le plugin SPIP Bonux déjà installé.

Création d’un menu

Le plugin ajoute un lien dans le bandeau 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...

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 :

  1. #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.

updated on 2 October 2019

Discussion

329 discussions

  • 1

    Bonjour,

    J’utilise Menus 1.5.15 avec un SPIP 3.0.21.

    Le menu que j’ai créé contient des rubriques de racine et 3 liens vers des pages spécifiques. Dont 2 vers la même page mais l’une a un paramètre en plus.
    Le plugin ne reconnait pas cette particularité. Est-ce normal ? Ou est-ce un bug ?

    Amicalement,

    Ybbet

    Reply to this message

  • 1

    Bonjour,

    J’aime bien ce genre de plugins qui sont faciles à mettre en place et à paramétrer. Merci.

    Mais, sur la version que j’ai téléchargée pour SPIP 3.1 je n’ai pas le choix Mots-clé et groupes de mots (ni l’autre choix pour ajouter des des mots-clés au menu).

    Est-ce normal ? Ils sont bien configurés sur le site pourtant et j’ai un article avec un mot-clé.

    Merci.

    • Oups, je me réponds à moi-même.

      En lisant les messages du forum, j’ai vu que toutes les options n’apparaissent pas et qu’il faut d’abord décocher celles que l’on veut dans la page de gestion des plugins.

      C’est tout bon. Un grand merci.

      NB : ne serait-il pas judicieux d’ajouter cette information à la documentation ? (si ça se trouve j’ai lu trop vite)

    Reply to this message

  • Bonjour Rastapopulos,

    J’aurais besoin d’un renseignement.
    Par rapport à un squelette, j’ai besoin de rajouter automatiquement une classe au li généré par la balise #MENUS_AFFICHER_ENTREE si il a des sous menu.
    Je souhaiterais donc surcharger cette balise, et lui passer un parametre indiquant la présence de sous menu ou pas.
    Donc je surcharge la fonction et récupère mon paramètre avec
    $test_sous_menu = interprete_argument_balise(2,$p);
    Par contre, comment puis je passer une valeur à :

    $p->code =  "(!$id_menus_entree) ? _T('zbug_champ_hors_motif', array('champ'=>'AFFICHER_ENTREE', 'motif'=>'MENUS_ENTREES')) : recuperer_fond(
                    'menus/'.$type_entree,
                    array_merge(unserialize($parametres),array($contexte=>true, 'env'=>\$Pile[0]))
            )";

    Et comment le réafficher aussi ensuite dans le squelette appelé (objet.html ou autre)

    Reply to this message

  • 3

    Bonjour,

    Très bel outil qui manquait à SPIP mais je n’arrive pas à avoir mes sous-rubriques sous chaque rubrique. Toutes les articles des sous-rubriques sont directement sous leurs rubriques respectives…

    Article, rubrique ou autre objet SPIP
    Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)
    Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)
    Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)

    donne :

    Article, rubrique ou autre objet SPIP
    Article
    Article
    Article
    Article
    Article
    Article
    Article
    Article
    Article

    • J’ai mis mes Rubriques (Accueil) en tête du site.
      En cliquant dessus, apparaissent dessous mes sous-rubriques (Article, rubrique ou autre objet SPIP) mais n’apparaissent pas mes articles…

      Si je mets mes sous-rubriques (Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options) mes articles apparaissent tous sous la Rubrique (Accueil)…

      Comprends pas très bien comment faire une arborescence :

      Rubrique
         Sous-rubrique 1
            Article 1
            Article 2
         Sous-rubrique 2
            Article 1
            Article 2
            Article 3
            Article 4
    • Je ne peux pas trop te répondre vu que je ne sais ni dans quel ordre tu as mis tes entrées, ni leur configuration à chacune, ni non plus le code HTML généré à la fin pour voir s’il y a une confusion.

    • Mes entrée :

      Accueil -> Rubrique 1

      Puis :

      Article, rubrique ou autre objet SPIP -> sous-rubrique 1

      Ensuite, je ne sais pas trop comment faire apparaître les titres des articles se rapportant à cette “sous-rubrique 1”…

    Reply to this message

  • 1

    Bonjour,
    Tout d’abord merci à ou aux auteurs de ce plugin.
    En spip 3.0.17 j’ai le menu se déconnecter mais pas dans le spip 3.0.20.
    Est ce que j’ai loupé quelque chose?

    Reply to this message

  • 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 2ème 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.

    Reply to this 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

    Reply to this message

  • 2

    Bonjour,
    j’aimerai bien ajouter

    1. |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..

    Reply to this 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.

    Reply to this message

  • 3

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

    1. #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).

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom