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

  • 1

    Bonjour et bonne année a tous,

    Est il possible de paramétrer ce plugin afin d’obtenir un menu comme celui ci?

    http://www.lyc-bascan-rambouillet.ac-versailles.fr/

    parce que c’est vraiment excellent.

    merci à vous tous.

    • Non, ce plugin ne permet que de générer des listes simples, pas des méga-menus avec du contenu hétéroclite dans certaines entrées (plein de blocs différents, pas forcément des liens, etc).

    Reply to this message

  • 2

    Bonjour,
    je trouve qu’il y a une ambiguïté dans les instructions (lorsqu’on crée un menu dans ecrire/?exec=menus_editer)

    Critère de tri des rubriques (numérique). Si vous saisissez “titre”, le critère ajouté sera par num titre et les rubriques seront triées par numéro de titre [Facultatif]

    si on saisit “titre”, le critère devient “par num titre”… mais comment classe-t-on par titre, alors ?

    Reply to this message

  • 2

    Bonjour,
    j’ai besoin d’attribuer une classe précise au premier <li> d’un menu généré par ce plugin. Mais dans le squelette, je ne trouve que le tag </li> fermant. Y a un truc que je ne comprends pas, mais quoi ? Quelqu’un sait-il où trouver le tag ouvrant ?

    • Les débuts de li sont dans les entrées, puisque chaque entrée a ses classes et spécificités. La fin dépend du type d’entrée : celles qui peuvent avoir des sous-menus n’ont pas de fin, car on peut insérer en cascade des sous-menus avant la fermeture.

      À part ça tu peux styler .menu-items .item:first-child en CSS.
      Et tu peux ajouter une classe en JS jQuery('.menu-items .item:eq(0)').addClass('premier');

    • Merci pour ta réponse. En fait first-child ne va pas, car je me suis mal exprimé, il me faut une classe spécifique pour les <li> de premier niveau. Mais si je peux l’attribuer “à la main” dans un champ, voilà qui règle le problème. Merci pour cette réactivité hors pair !

    Reply to this message

  • 2

    Bonjour,
    Bravo pour ce plugin, mais...

    Impossible de traduire le texte dans prive/squelettes/contenu/configurer_menus.html;
    Aussi du texte codé en dur dans formulaires/configurer_menus.php.

    Peut être pour la prochaine version... ?

    Merci d’avance.
    Cordialement,
    Hanjo

    Reply to this message

  • 4

    Bonjour.

    J’utilise le plugin menus sur une version 1.4.6 sur spip 3.0.13.
    J’avais utilisé le type d’entrée de menu “Liste ou arborescence de rubriques et d’articles” sur un site en production.
    Depuis une certaine mise à jour du plugin (je ne sais laquelle), je n’ai plus:
    -  de possibilité d’exporter/importer mon menu;
    -  de modifier ou d’ajouter le type d’entrée de menu “Liste ou arborescence de rubriques et d’articles”. Pour mes entrées pré-existantes de ce type, elles continuent quand-même à fonctionner, mais, je me répète, plus moyen de les modifier.

    Je suis le seul?

    Merci de votre aide.

    Ludo

    • Une raison possible aurait été que désormais certains types d’entrée peuvent être cachés (et certains le sont par défaut). Mais ce n’est pas censé être le cas de ce type-là pour les anciennes installations qui mettent à jour.

      Essayes d’aller dans la configuration du plugin pour configurer ce qui est masqué ou pas.

      Pour ce qui est de l’import/export, il faut le plugin YAML pour que ça s’active. C’est le cas ?

    • Salut!

      Pour l’export, c’est tout bon avec le plugin yaml.

      Pour les entrées de menu « Liste ou arborescence de rubriques et d’articles », je m’étais douter d’un tel changement de fonctionnement du plugin et j’avais pu constater qu’en effet, certains types d’entrées pouvaient ne pas être proposées. Seulement, dans cette page de config du plugin “Menus”, le type « Liste ou arborescence de rubriques et d’articles » n’apparait pas non plus :-(

      En attendant, je m’en suis sortis en exportant mon menu, en modifiant mon fichier yaml et en le ré-important.

      À suivre …

    • Mmmh, dans les fichiers du plugins, est-ce que tu as menus/rubriques_completes.html et menus/rubriques_completes.xml ?

    • Farpaitement:

      ls www/plugins/menus_1/menus/rubriques_completes.*
      www/plugins/menus_1/menus/rubriques_completes.html  www/plugins/menus_1/menus/rubriques_completes.xml

      J’avais zieuter ça aussi … mais pour la suite des investigations, je sèche.

    Reply to this message

  • 4

    Bonjour, excellent plugin merci.
    Ce qui serait génial et formateur c’est de visualiser les écritures de boucles générées par ces menus.
    J’ai cherché dans les fichiers du plugins sans trouver. Il y aurait moyen ?

    • Ben, toutes les boucles sont dans les fichiers des types d’entrées, dans le dossier menus/ du plugin.

    • Je crois comprendre : on trouve dans /menu/ les .html qui comportent les différentes boucles sources qui permettent de générer celles de l’utilisateur.
      Mais pas de fichier qui permette de visualiser directement les boucles générées par l’utilisateur ? ou alors je suis total miro ce qui est bien possible :)
      Ce serait un sacré coup de pouce pour apprendre le code et la logique Spip.

    • Je ne comprends absolument rien de ce que tu veux dire. Ou alors si je crois comprendre ce que tu crois comprendre, mais ça n’existe absolument pas. Pourquoi tu parles de boucle qui génèrent des boucles ? De quels utilisateurs ?

      Les fichiers dans menus/ sont ceux utilisés pour générer le menu, et c’est tout.

    • D’ailleurs il suffit faire de var_mode=inclure dans l’URL pour voir quels fichiers sont utilisés dans tes pages.

    Reply to this message

  • 1

    bonjour,
    merci pour ce super plugin.

    Une question concernant le multilinguisme : je n’arrive pas à créer une entrée de menu vers l’accueil du site qui garde la langue active.
    Je cherche à obtenir l’équivalent de [(#URL-SITE-SPIP|parametre_url{lang,#LANG})] . Est-ce que possible à créer via ce plugin?

    d’avance merci
    joz

    Reply to this message

  • 6

    bonjour,

    merci pour ce plugin vraiment pratique !

    J’ai une rubrique restreinte où des visiteurs peuvent accéder (dans la partie publique). J’ai mis dans le menu “se connecter” en le redirigeant vers la rubrique en question, mais quand je me connecte, je suis redirigée vers la partie privée (où je n’ai pas le droit d’aller) plutôt que la partie publique (et donc page 404).

    il me semblait que je pouvais simplement être redirigée vers la partie publique de la rubrique, non ?

    • T’as mis quoi comme url de redirection ? Faut bien mettre un truc relatif. Par contre cette entrée est mal foutu car quand on est déja connecté ça propose toujours un lien vers l’admin même quand on a configuré une url du site pour la redirection. Faudrait affiner tout ça…

    • ?rubrique8

      donc c’est “normal” que je sois redirigé vers l’espace privé ? Il ne me reste plus qu’à surcharger, quoi

      sarah

    • Euh c’est pas un URL valide ça je crois. Ça devrait être (par exemple) spip.php?rubrique8.

    • sisi, c’est un raccourci qui marche. Mais meme avec l’écriture que tu proposes, j’ai une erreur 404 car il essaye d’aller dans la partie privée

    • Mais qui essaye d’aller où ? :D

      Cette entrée génère juste un lien vers la page de login par défaut (ou celle fourni par un squelette comme Zpip ou autre) : page=login&url=le_truc_que_t'as_configuré

      Alors est-ce que tu as une page de login personnalisé ? Dans laquelle tu n’utiliserais pas le même appel que dans la page par défaut ? (càd avec #ENVurl comme argument lorsqu’il existe)

    • problème résolu.

      je n’avais pas de page personnalisé. ça appellait la page par défaut de zpip.

      J’avais cependant surchargé login.php dans squelettes, et la version était différente de celle de zpip. J’ai mis la plus récente et j’ai rajouté login.html

      en fait, je ne devrais pas avoir besoin de surcharger, mais je dois faire un appel dans mon thème que j’ai écris toute seule... Enfin bon, ça marche, c’est le principal

      Merci !

    Reply to this message

  • 8

    Bonjour,
    Est-il possible de marquer la rubrique du menu correspondant à la page courante ?
    (Par exemple en ajoutant une classe “current” :

    liclass=“menu-entree item current”

    )
    Merci

    • C’est déjà le cas. Avec la classe “on” comme dans la plupart des trucs de SPIP, comme le filtre “expose”.

    • Merci RastaPopoulos, effectivement, et ça semble être également le cas avec la classe “active”

    • Je dispose d’un menu avec des sous-menu pour un rendu de type “menu déroulant”.
      Si je suis dans un sous menu, j’aimerai que ça soit le menu et non le sous menu qui soit “active” afin de voir dans quelle rubrique principale je suis.
      Est-ce possible ?

    • Avec le type “rubriques_completes”, c’est toute la hiérarchie qui a la classe “active”.

    • Je suis perdu.
      J’ai attribué le type “rubriques_completes” au menu racine qui contient un sous menu ayant des objets de type “article” appartenant à la rubrique du menu racine. Et ça ne fonctionne pas, seul l’élément courant du sous menu a la classe “active”.

      Nota : J’ai observé qu’en utilisant le type “rubrique” au menu racine, et aussi “rubrique” au sous menu, cela fonctionne, néanmoins je souhaiterai, dans la mesure du faisable, pointer sur des articles.

      Est-ce qu’il y a quelque chose que je fais mal ?

    • il faut remplacer le type “rubrique” par “rubriques_completes” au menu et non au sous menu ? Je n’ai pas le résultat attendu.. Merci.

    • Est-ce qu’il existe un exemple avec “rubriques_completes” pour l’adapter ? Je n’arrive pas dans l’état à mettre en place la surbrillance la liste active.

    • Il n’y a pas plus d’exemple que les captures ci-dessus. Le type d’entrée “rubriques_completes” (ça c’est le nom du squelette), c’est “Liste dynamique de rubriques”. Quand on utilise ça, ça met “active” sur toute la hiérarchie de là où on se trouve.

    Reply to this message

  • 1

    Bonjour,

    je cherche à ajouter dans le menu de type :
    “Article, rubrique ou autre objet SPIP”
    la condition :
    ”N’afficher que les sous-rubriques de la rubrique en cours (mettre “oui”, sinon laisser vide) [Facultatif]”,
    (présente dans le menu de type :
    “Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)“)

    Comment faire ?

    J’ai tenté d’ajouter au fichier menus/objet.xml
    <parametre nom="sousrub_cond" label="menus:entree_sousrub_cond" />
    et au fichier menus/objet.html
    [(#GET{sousrub_cond}|oui)<br /><:menus:info_sousrub_cond:>]

    Mais cela ne fonctionne pas.

    • Ça ne veut absolument rien dire puisque dans ce type il n’a aucun notion de “sous-rubrique” puisque le but est juste de récupéré UN objet, quel qu’il soit, en donnant son type et son identifiant. Ya aucun automatisme et aucun sous-menu automatique, ça ne génère qu’une unique entrée dans le menu suivant la configuration qu’on a donné.

    Reply to this message

Add a comment

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.

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