Menu - affichage conditionnel de certaine rubrique

Bonjour, j'ai une boucle pour afficher mon menu :

<B_rubriques>
   <ul>
     <BOUCLE_rubriques(RUBRIQUES) {par num titre} {id_parent} {tout}>
       <li style="padding-left: 0.3em;">
         <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
         <BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques>
       </li>
     </BOUCLE_rubriques>
   </ul>
</B_rubriques>

ça marche plutôt bien sauf que pour certaine rubrique, je ne voudrais pas afficher les sous-rubriques hors là y a tout (vraiment tout)... y a un moyen de rendre la boucle récursive conditionnelle ? En gros que ce code : <BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques> ne s'exécute pas pour certaines rubriques...

Bruno.

Bonjour Bruno,
Si je comprend bien tu veux exclure certaines rubriques ?
Si c'est el cas, je dirais qu'il faut utiliser une restriction par
id_rubrique (xxxx) autant de fois que nécessaire :
<B_rubriques>
<ul>
     <BOUCLE_rubriques(RUBRIQUES) {id_rubrique!= xxxx }{par num titre}
{id_parent} {tout}>
      <li style="padding-left: 0.3em;">
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
<BOUCLE_sous_rubriques(BOUCLE_rubriques)>
</BOUCLE_sous_rubriques>
      </li>
</BOUCLE_rubriques>
</ul>
</B_rubriques>

Bruno a écrit :

Bonjour, j'ai une boucle pour afficher mon menu :

<B_rubriques>
   <ul>
     <BOUCLE_rubriques(RUBRIQUES) {par num titre} {id_parent} {tout}>
       <li style="padding-left: 0.3em;">
         <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
         <BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques>
       </li>
     </BOUCLE_rubriques>
   </ul>
</B_rubriques>

ça marche plutôt bien sauf que pour certaine rubrique, je ne voudrais pas afficher les sous-rubriques hors là y a tout (vraiment tout)... y a un moyen de rendre la boucle récursive conditionnelle ? En gros que ce code :

ce n'est pas la boucle récursive que tu dois rendre contionnelle mais la boucle appelée

perso, j'utilise un mot clef pour sélectionner les rubrique que je veux exclure avec un doublon

<BOUCLE_exclus(RUBRIQUES) {titre_mot = exclusion }{doublons}> </BOUCLE_exclus>

<ul >
<BOUCLE_smenu1(RUBRIQUES){racine}{par num titre}{doublons}>
   <li>
   <a href="#URL_RUBRIQUE" title="[(#TITRE|supprimer_numero)]" >
   [(#TITRE|supprimer_numero)]</a>
  <B_smenu2>
  <ul>
  <BOUCLE_smenu2(RUBRIQUES){id_parent}{par num titre}{doublons}>
         <li><a href="#URL_RUBRIQUE"title="[(#TITRE|supprimer_numero)]" >
         [(#TITRE|supprimer_numero)]</a> <BOUCLE_ssmenu(boucle_smenu2)></BOUCLE_ssmenu>
         </li>
         </BOUCLE_smenu2>
  </ul>
     </B_smenu2>
     </li>
</BOUCLE_smenu1>
</ul>

+1 pour cette version, plus propre en termes dévolutions future de tes rubriques.

johann a écrit :

Bonjour Bruno,
Si je comprend bien tu veux exclure certaines rubriques ? Si c'est el cas, je dirais qu'il faut utiliser une restriction par id_rubrique (xxxx) autant de fois que nécessaire : <B_rubriques>
<ul>
     <BOUCLE_rubriques(RUBRIQUES) {id_rubrique!= xxxx }{par num titre}
{id_parent} {tout}>
      <li style="padding-left: 0.3em;">
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
<BOUCLE_sous_rubriques(BOUCLE_rubriques)>
</BOUCLE_sous_rubriques>
      </li>
</BOUCLE_rubriques>
</ul>
</B_rubriques>

ce code n'affiche pas certaine rubrique {id_rubrique!= xxxx } et marche bien mais ce que je veux c'est ne pas afficher les enfants de certaines rubriques...
j'ai donc tenté ceci :
<B_rubriques>
   <ul>
     <BOUCLE_rubriques(RUBRIQUES) {par num titre} {id_parent} {tout}>
       <li style="padding-left: 0.3em;">
         <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
         <BOUCLE_sous_rubriques(BOUCLE_rubriques) {id_rubrique!=x} ></BOUCLE_sous_rubriques>
       </li>
     </BOUCLE_rubriques>
   </ul>
</B_rubriques>

mais ça ne marche pas.

Bruno.

<B_rubriques>
   <ul>
     <BOUCLE_rubriques(RUBRIQUES) {par num titre} {id_parent} {tout}>
       <li style="padding-left: 0.3em;">
         <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
         <BOUCLE_sous_rubriques(BOUCLE_rubriques) {id_rubrique!=x} ></BOUCLE_sous_rubriques>
       </li>
     </BOUCLE_rubriques>
   </ul>
</B_rubriques>

Et si tu essayes comme ça ?

<B_rubriques>
   <ul>

     <BOUCLE_rubriques(RUBRIQUES) {par num titre} {id_parent} {tout}>
   <li style="padding-left: 0.3em;">
  <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a> <BOUCLE_test(RUBRIQUES){id_rubrique!=x}></BOUCLE_test>
         <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
    </BOUCLE_sous_rubriques>
  </B_test>
       </li>
     </BOUCLE_rubriques>
   </ul>
</B_rubriques>

Eric

merci ça marche comme ça...

Bruno.

rpapa a écrit :

Bruno a écrit :

Bonjour, j'ai une boucle pour afficher mon menu :

<B_rubriques>
   <ul>
     <BOUCLE_rubriques(RUBRIQUES) {par num titre} {id_parent} {tout}>
       <li style="padding-left: 0.3em;">
         <a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
         <BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques>
       </li>
     </BOUCLE_rubriques>
   </ul>
</B_rubriques>

ça marche plutôt bien sauf que pour certaine rubrique, je ne voudrais pas afficher les sous-rubriques hors là y a tout (vraiment tout)... y a un moyen de rendre la boucle récursive conditionnelle ? En gros que ce code :

ce n'est pas la boucle récursive que tu dois rendre contionnelle mais la boucle appelée

perso, j'utilise un mot clef pour sélectionner les rubrique que je veux exclure avec un doublon

<BOUCLE_exclus(RUBRIQUES) {titre_mot = exclusion }{doublons}> </BOUCLE_exclus>

<ul >
<BOUCLE_smenu1(RUBRIQUES){racine}{par num titre}{doublons}>
   <li>
   <a href="#URL_RUBRIQUE" title="[(#TITRE|supprimer_numero)]" >
   [(#TITRE|supprimer_numero)]</a>
  <B_smenu2>
  <ul>
  <BOUCLE_smenu2(RUBRIQUES){id_parent}{par num titre}{doublons}>
         <li><a href="#URL_RUBRIQUE"title="[(#TITRE|supprimer_numero)]" >
         [(#TITRE|supprimer_numero)]</a> <BOUCLE_ssmenu(boucle_smenu2)></BOUCLE_ssmenu>
         </li>
         </BOUCLE_smenu2>
  </ul>
     </B_smenu2>
     </li>
</BOUCLE_smenu1>
</ul>

Bruno a écrit :

merci ça marche comme ça...

pour info cette boucle ou sa soeur est en de multiples exemplaires sur spip-contrib
entre autre ici Menu dépliant arborescent PureDOMExplorer - SPIP-Contrib d'où je l'ai repris