Une très belle boucle récursive proposée par Gilles Vincent
http://article.gmane.org/gmane.comp.web.spip.user/ 67304/match=boucles+recursives+rubriques
Voici une solution avec les boucles récursives pour la page rubrique.html : Ces boucles affichent l’ensemble des rubriques/sous-rubriques du site, quel que soit le niveau de profondeur.
<style>
a.lienon {background: #FFCC00; text-decoration: none}
</style>
<ul>
<BOUCLE_principale(RUBRIQUES){racine} {par titre} >
<li>
<a class="lien#EXPOSER" href="#URL_RUBRIQUE" >#TITRE</a>
<B_rubriques>
<ul>
<BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre} >
<li>
<a class="lien#EXPOSER"href="#URL_RUBRIQUE">#TITRE</a>
<BOUCLE_sousRubriques(BOUCLE_rubriques)> </BOUCLE_sousRubriques>
</li>
</BOUCLE_rubriques>
</ul>
</B_rubriques>
</li>
</BOUCLE_principale>
</ul>Explication : L’idée, c’est de parcourir la liste des rubriques à la racines, puis pour chacune d’elles effectuer récursivement un parcourt en largeur d’abord, profondeur ensuite (je crois que cet ordre est obligatoire pour que l’on puisse fermer correctement les listes non numérotées)
La balise #EXPOSE n’est là que pour indiquer si l’on est dans la liste des ancetres de la rubrique en cours.
Merci Gilles :-)
Petites précisions :
Dans un inclure, penser à ne pas perdre le context, il faut le spécifier.
INCLURE(monfichier.php){id_rubrique}
Lire aussi la documentation Spip à ce sujet
Exposer un article dans une liste