SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 160 visiteurs en ce moment

Accueil du site > Navigation > Menus contextuels > Menu hierarchique, rubriques/articles classés

Menu hierarchique, rubriques/articles classés

5 septembre 2004 – par m. – 59 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

1 vote

créer des menus hiérarchisés sans limite de profondeur, en entrelaçant les rubriques et les articles dans les sous-menus, et en les classant selon l’ordre que l’on a défini.

l’intérêt principal, en dehors de l’absence de limite de profondeur, est de ne pas se limiter à lister d’abord les rubriques et ensuite les articles dans les sous-menus, mais de les sortir entrelacées, dans l’ordre que l’on aura choisi.


exemple

le site se compose de

  • rubrique fruits
    • article poires
    • article pommes
  • rubrique légumes
    • article poireaux
    • rubrique pomme de terre
      • article bintje
      • article belle de fontenay
    • article chou-fleur
    • article navet
    • article tomates
    • article poivrons
    • article concombre

ce menu permet de placer la rubrique pomme de terre entre les articles poireaux et chou-fleur : on ne mélange pas les légumes d’hiver avec ceux d’été...

voir ici un exemple en ligne sur un spip 1.7.2 non modifié en ayant juste uploadé tous les fichiers.


contenu

menu.html/menu.php3 : squelette du menu à appeler dans les pages.

menu.css/menu.js : feuille de style et javascript pour l’affichage du menu.

plus.gif/moins.gif : images « + » et « - » pour développer et condenser les sous menus.

mes_fonctions.php3 : deux filtres, pour jouer avec les numéros d’ordre dans les titres des articles et des rubriques.

article.html/article.php3 : squelette d’article rudimentaire contenant l’appel du menu.

rubrique.html/rubrique.php3 : squelette de rubrique rudimentaire contenant l’appel du menu.

sommaire.html/sommaire.php3 : squelette de sommaire rudimentaire contenant l’appel du menu, en dehors d’un contexte d’article ou de rubrique.


mise en oeuvre

-  numérotez les titres des articles et des rubriques pour les classer avec un numéro de la forme « nn. » (numéro d’ordre point espace) ; pour l’exemple ci-dessus, on aurait : « 1. fruits » « 1. poires » « 2. pommes » « 2. légumes » « 1. poireaux » « 2. pommes de terre » « 3. navets » ...

-  filtrez vos appels de titre par (#TITRE ;

-  copier les deux filtres de mes_fonctions.php3 dans le vôtre ;

-  placer les fichiers menu.html, menu.php3, menu.js, menu.css, plus.gif et moins.gif à la racine de votre spip ;

-  copier l’appel du menu :

<INCLURE(menu.php3){id_rubrique}{id_article}>

à l’endroit opportun dans les fichiers où vous en avez besoin ;

-  jouez avec menu.css pour adapter le menu à votre mise en page ;


précautions d’emploi

-  si vous n’utilisez pas article.html/article.php3 et rubrique.html/rubrique.php3 comme squelette d’affichage des articles et des rubriques, il faut modifier menu.html : ligne 29 colone 111 pour rubrique et ligne 41 colone 118 pour article.

-  si les titres des articles et des rubriques ne contiennent pas de numéro, elle seront classées par ordre alphabétique.

Retour en haut de la page

Vos commentaires

  • Le 26 décembre 2008 à 19:04, par ? En réponse à : Menu hierarchique, et spip 2.0 Resolu

    Bonsoir a tous,

    voici la solution que Fred m’a donnée sur la liste de spip :

    dans le fichier « menu.html »
    il faut rajouter :

    global $menu;

    entre

    <?php

    et

    $i=0;
    <BOUCLE_menu(RUBRIQUES)...

    au debut du fichier.

    Et tout fonctionne en Spip2.0.x

    Bonnes fêtes,

    Jmarco

    Répondre à ce message

  • Le 17 décembre 2008 à 10:11, par ? En réponse à : Menu hierarchique, et spip 2.0

    Bonjour,
    je reviens sur ce menu qui ne veut toujours pas fonctionner sur spip 2.0 (dernier post du mois de septembre)
    pourtant je vois qu’en haut de cette page Spip 2.0 est bien là, donc que ce menu devrait fonctionner...
    si quelqu’un l’a fait, il serait bon de savoir comment,
    dans rubrique.html j’ai :

    <INCLURE{fond=inc/inc-menu}{id_rubrique} />

    et j’ai toujours ces warnings

    Warning: ksort() expects parameter 1 to be array, null given in /mnt/pingouin/00sites/10-03-2008-www/www/00le-clapotis/ecrire/public/assembler.php(534) : eval()'d code on line 347

    Warning: Invalid argument supplied for foreach() in /mnt/pingouin/00sites/10-03-2008-www/www/00le-clapotis/ecrire/public/assembler.php(534) : eval()'d code on line 348

    merci d’avance,
    j’ai 3 sites qui attendent pour passer en v2.0, et ce menu est bien.

    Cordialement,
    Jmarco

    Répondre à ce message

  • Le 25 septembre 2008 à 00:38, par Jmarco En réponse à : Menu hierarchique, rubriques/articles classés

    Bonsoir,
    je viens d’installer la spip v2.0 beta2 12774, et ce menu ne répond plus.
    A la place j’ai ::
    > Warning : ksort() expects parameter 1 to be array, null given in /mnt/pingouin/00sites/10-03-2008-www/www/spip2beta/ecrire/public/assembler.php(533) : eval()’d code on line 340

    > Warning : Invalid argument supplied for foreach() in /mnt/pingouin/00sites/10-03-2008-www/www/spip2beta/ecrire/public/assembler.php(533) : eval()’d code on line 341
    Est-ce que certain d’entre-vous ont ce probleme ?
    Mon test est en local, bien-sûr.

    je confirme que sur la 1.9.2e il fonctionne très bien.

    Merci de vos réponses,
    amicalement,
    Jmarco

    Répondre à ce message

  • Le 13 août 2008 à 12:31, par ? En réponse à : Menu hierarchique, rubriques/articles classés

    j’ai en fait une question.
    On a
    une rubrique, une sous rubrique, puis disons un article.
    Comment puis je faire pour nommer l’article : title ; « nom de la rubrique - nom de la sous rubrique ». ?

    merci

    Répondre à ce message

  • Le 2 avril 2007 à 20:43, par Jmarco En réponse à : Menu hierarchique, rubriques/articles classés

    Bonjour à tous,

    ce menu est une vraie petite merveille, je suis sous spip1.9.2a et je voudrais masquer un article, mais en dépit de mes efforts je n’arrive a rien,

    donc soit avec un mot clef : {titre_mot=Cacher}

    ou soit avec une restriction au niveau du titre, la 1ere lettre :

    {titre!==^[xX]} rien n’y fait, (l’article s’appelle Xcalendrier dans la rubrique « AGENDA » )
    merci,
    a+ Jmarco

    Répondre à ce message

  • Le 18 août 2006 à 01:42, par sBa En réponse à : ce menu ne fonctionne plus avec spip 1.9

    pas d’affichage des sous rubriques et leur contenu.

    Dommage :-(

    • Le 31 janvier 2007 à 21:31, par jmarc dufour En réponse à : ce menu ne fonctionne plus avec spip 1.9

      Bonsoir a tous , pour moi ausi ce menu ne fonctionnait plus dans spip 1.9.1,
      donc je viens de trouver une soluce en local,(je n’ai pas encore fait la mise a jour en ligne, qqs petits détails de liens a regler...),
      en fait c’est dans le fichier menu.html qu’il faut rajouter une ligne :

      en fait, j’ai fait un simple copier-coller, de l’expression superieure, je ne suis pas du tout un crac de php & Cie, mais c’est plutot en bricolant...
      Donc testez et dites moi si chez vous c’est bon.

      + jmarco

    • Le 14 février 2007 à 17:49, par Angelinaemi En réponse à : ce menu ne fonctionne plus avec spip 1.9

      Salut, je suis avec spip 1.9 et je n’arrive pas a faire fonctionner le menu meme avec ta phrase de code magique (je suis en local)
      Pourrais tu m’envoyer ton squellette stp ?

    • Le 20 février 2007 à 08:18, par jmarc dufour En réponse à : ce menu ne fonctionne plus avec spip 1.9

      Bonjour, je le poste ici , je n’ai pas ton mail :

      <script type="text/javascript" language="javascript" src="[(#CHEMIN{menu.js})]"></script>

      <?php

      $i=0;

      <BOUCLE_menu(RUBRIQUES) {racine} {par titre} {inverse}>

              <BOUCLE_menu_n(RUBRIQUES) {id_rubrique} {par titre}>

                      $menu[$i]["[(#TITRE|kenum)] - #ID_RUBRIQUE"]=array("parent"=>"#ID_PARENT","titre"=>"[(#TITRE|denum)]","idrub"=>"#ID_RUBRIQUE","idart"=>"");

                      $i++;

                      <BOUCLE_menu_a(ARTICLES) {id_rubrique} {par titre}>

                              $menu[$i]["[(#TITRE|kenum)] - #ID_ARTICLE"]=array("parent"=>"#ID_RUBRIQUE","titre"=>"[(#TITRE|denum)]","idrub"=>"","idart"=>"#ID_ARTICLE");

                      </BOUCLE_menu_a>

                      <BOUCLE_menu_r(RUBRIQUES) {id_parent} {par titre}>

                      $menu[$i]["[(#TITRE|kenum)] - #ID_ARTICLE"]=array("parent"=>"#ID_RUBRIQUE","titre"=>"[(#TITRE|denum)]","idrub"=>"","idart"=>"#ID_ARTICLE");

                      <BOUCLE_sous_menu(boucle_menu_n)></BOUCLE_sous_menu>

                      </BOUCLE_menu_r>

                      $i--;

              </BOUCLE_menu_n>

      </BOUCLE_menu>



      function ecrire_menu ($i,$parent) {

              global $menu;

              ksort($menu[$i],SORT_NUMERIC);

              foreach($menu[$i] as $menu_o ) {

                      $largeur=201-(($i-1)*16);

                      if ($menu_o["parent"]==$parent) {

                              if ($menu_o["idrub"]!="") {

                                      echo "

                                              <div class=\"lienr\">

                                                      <div class=\"plusmoins\" id=\"plusmoins".$menu_o["idrub"]."\"  onclick=\"change(".$menu_o["idrub"].");\" > </div>

                                                      <a id=\"tete_rub".$menu_o["idrub"]."\" class=\"alien\" href=\"#URL_PAGE{rubrique,id_rubrique}=".$menu_o["idrub"]." \">".$menu_o["titre"]."</a>

                                              </div>

                                              <div id=\"rub".$menu_o["idrub"]."\" class=\"niv\" >

                                      ";

                                      $prochain_parent=$menu_o["idrub"];

                                      $k=1+$i;

                                      ecrire_menu ($k,$prochain_parent);

                                      echo "

                                              </div>

                                      ";

                              } else {

                                      echo "

                                              <div class=\"lien\"><a id=\"art".$menu_o["idart"]."\" class=\"alien\" href=\"#URL_PAGE{article,id_article}=".$menu_o["idart"]."\"><img src='squelettes/sculpteurs3/file.gif' width='16' height='16' border='0' alt='file'>".$menu_o["titre"]."</a></div>

                                      ";

                              }

                      }

              }

      }

      ecrire_menu(0,0);



      ?>



      <B_menu_ouvre_article>

      <BOUCLE_menu_ouvre_article(ARTICLES){id_article}>

              <script type="Text/JavaScript">

              <BOUCLE_menu_voir_article(HIERARCHIE){id_article}>

                      change('#ID_RUBRIQUE');

              </BOUCLE_menu_voir_article>

              document.getElementById('art#ID_ARTICLE');

              </script>

      </BOUCLE_menu_ouvre_article>

      </B_menu_ouvre_article>



              <BOUCLE_menu_ouvre_rubrique(RUBRIQUES){id_rubrique}>

                      <script type="Text/JavaScript">

                      <BOUCLE_menu_voir_rubrique(HIERARCHIE)>

                              change('#ID_RUBRIQUE');

                      </BOUCLE_menu_voir_rubrique>

                      change('#ID_RUBRIQUE');

                      document.getElementById('tete_rub#ID_RUBRIQUE');

                      </script>

              </BOUCLE_menu_ouvre_rubrique>

      <//B_menu_ouvre_article>

      a+ jmarco

    • Le 23 février 2007 à 00:29, par jmarc dufour En réponse à : ce menu ne fonctionne plus avec spip 1.9

      Bonsoir,

      je viens de migrer (le-clapotis.net) vers Spip 1.9.2 en local bien-sur, et ce menu marche très bien avec les modifs ci-dessus decrites.

      + Jmarco

    Répondre à ce message

  • Le 20 février 2007 à 16:18, par scoubidoo.bidoo En réponse à : Menu hierarchique, rubriques/articles classés

    Bonjour

    Suite à des modifications sur le fichiers nous l’avons fait fonctionner avec une version 1.9.1 une petite modification des CSS, ains que la suppression des fichiers .php3 et un include directement dans le squelette MGS

    j’aurais bien voulu joindre le .zip mais je ne peux pas uploader içi :’(

    scoubidoo

    Répondre à ce message

  • Le 14 février 2007 à 17:02, par Angelinaemi En réponse à : Menu hierarchique, rubriques/articles classés

    Bonjour,
    ce menu me plaid enormément mais j’aimerais qu’il affiche toute mes sous rubriques d’une seule.
    Je me doute qu’il faut mettre le id_parent quelques part mais ou ?

    Le menu afficherait toutes mes sous rubriques de « patrimoine » ainsi que les articles qui les conserne on fonction d’ou est l’internaute :

    * patrimoine(rubrique)

    *langeac(rubrique)

    - monsatère (article)

    - collègiale (article)

    *chanteuges(rubrique)

    Répondre à ce message

  • Le 20 janvier 2005 à 18:51, par Serge En réponse à : Menu OK sauf la dernière rubrique

    Merci pour ce menu déroulant facile à implémenter.

    J’utilise SPIP v1-8b2 et FireFox 1.0 ainsi que Safari. J’emploie un menu à deux niveaux. Tout marche bien, sauf la dernière rubrique qui se déplie mal.

    cf. Livre d’Or : site.

    • Le 5 août 2006 à 08:24, par serge.lanoe En réponse à : Menu OK sauf la dernière rubrique

      Je n’ai pas pu régler le problème de la dernière rubrique : aussi je suis passé au menu spipien des contrib.

      Bien cordialement.

      Serge

    Répondre à ce message

  • Le 2 avril 2006 à 16:07, par sBa En réponse à : Ce menu génère un ’parse-error’ si présence de guillemets

    Ce menu, et c’est dommage, génère un parse error si le titre d’une rubrique ou d’un article contient un ou des guillements ("). On obtient alors l’affichage suivant :
    Parse error: parse error, expecting `')'' in inc-public.php3(20) : eval()'d code on line 16. testé avec Spip 1.8.3.

    Une piste pour régler de petit problème ?

    ci-dessous le code proposé par la contrib à ajouter dans mes_fonctions.php3

    <?

    function denum($texte)
    {
            $toto=ereg_replace("^[0-9]*\. ","",$texte);
            return $toto;
    }

    function kenum($texte)
    {
     if (ereg ("^([0-9]*)\. ", $texte, $regs))
            return $regs[1];
    }

    ?>

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Associaspip

    12 septembre 2011 – 67 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Plugin permettant la gestion d’une association incluant les fonctionnalités suivantes : Profil de votre association Gestion des membres (en association optionnelle avec le Plugin Coordonnées et le plugin Champs Extras 2) Gestion des cotisations (...)

  • Albums

    8 novembre 2011 – 26 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet d’afficher une ou plusieurs galeries d’images au fil du texte, dans les articles et ailleurs. Qui rédige un récit de voyage, par exemple, aimerait pouvoir illustrer son article de plusieurs petites séries de photos, une par jour. Or (...)

  • Maparaan (Squelette)

    21 mars 2011 – 150 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un squelette principalement pour les sites de type blog. Présentation : Adaptation pour Zpip du thème Wordpress Maparaan conçu par Padd Solutions. Voir une démo du thème et du squelette Maparaan. Ce squelette a été conçu pour le thème du même nom. Pour (...)

  • MediaBox

    10 mai 2010 – 180 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Aperçu La MediaBox est une Boîte multimédia polyvalente et personnalisable. Le plugin est basé sur la librairie moderne ColorBox, qui a été enrichie et adaptée pour SPIP. Par défaut, mediabox propose 5 habillages. Il est assez facile d’en créer de (...)

  • Formulaire de contact libre

    27 avril 2011 – 34 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)