Pour SPIP 1.6 ou 1.7
Je me suis donc mis à développer un site avec des rubriques qui pour l’instant n’ont qu’un seul article (voire même pas d’article, mais seulement des liens).
J’ai donc utilisé le code suivant pour faire mes liens.
<BOUCLE_Rubriques(RUBRIQUES){id_parent=0} {par num titre}><h2 title="[(#DESCRIPTIF)]">[(#TITRE|supprimer_numero)]</h2>
<BOUCLE_SsRubriques(RUBRIQUES){id_parent} {par num titre}><li>
<?php $ledescriptif = '[(#DESCRIPTIF|texte_script)]';
$letitre='[(#TITRE|texte_script|supprimer_numero)]';
?>
<BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>
<a href="[(#URL_RUBRIQUE)]" title="<? echo $ledescriptif; ?>"><? echo $letitre; ?></a>
</BOUCLE_articles_plusdun>
<BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
<a href="[(#URL_ARTICLE)]" title="<? echo $ledescriptif; ?>"><? echo $letitre; ?></a>
</BOUCLE_articles_unseul>
<a href="[(#URL_RUBRIQUE)]" title="<? echo $ledescriptif; ?>"><? echo $letitre; ?></a>
<//B_articles_unseul>
<//B_articles_plusdun>
</li></BOUCLE_SsRubriques>
</ul>
</BOUCLE_Rubriques>
Quelques remarques pour comprendre ces boucles :
- les rubriques principales n’ont pas d’articles, seules les sous-rubriques en ont (et il n’y a que 2 niveaux de rubriques)
- Il y a 3 cas à gérer :
- Il y a au moins 2 articles : renvois sur la rubrique
- Il n’y a qu’un article : renvois sur l’article
- Il n’y a pas d’article (ça peut se produire : quand il n’y a que des liens ou que des brèves) : renvois sur la rubrique
- Dans tous les cas, on a stocké avant de faire les sous-boucles le titre et descriptif de la rubrique concernée pour pouvoir les mettres dans le lien.
Mise à jour pour la 1.8
La version 1.8 de SPIP introduit la notion de Balises non ambiguës. Ceci permet de réécrire cette contrib sans utiliser de php (qui ne servait après tout qu’à récupérer le #TITRE et le #DESCRIPTIF de la rubrique alors qu’on était déjà dans un boucle ARTICLES).
<BOUCLE_Rubriques(RUBRIQUES){id_parent=0} {par num titre}><h2 title="[(#DESCRIPTIF|supprimer_tags|attribut_html)]">[(#TITRE|supprimer_numero)]</h2>
<BOUCLE_SsRubriques(RUBRIQUES){id_parent} {par num titre}><li>
<BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}>
<a href="[(#URL_RUBRIQUE)]"[ title=(#_SsRubriques:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_SsRubriques:TITRE|supprimer_numero)]</a>
</BOUCLE_articles_plusdun>
<BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}>
<a href="[(#URL_ARTICLE)]"[ title=(#_SsRubriques:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_SsRubriques:TITRE|supprimer_numero)]</a>
</BOUCLE_articles_unseul>
<a href="[(#URL_RUBRIQUE)]"[ title=(#_SsRubriques:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_SsRubriques:TITRE|supprimer_numero)]</a>
<//B_articles_unseul>
<//B_articles_plusdun>
</li></BOUCLE_SsRubriques>
</ul>
</BOUCLE_Rubriques>
Version universelle : illimitée et récursive
Et voici, toujours pour la version 1.8.x de SPIP ce qu’il faut écrire pour avoir une liste à puce plus ou moins indentée reprenant la structure hiérarchique des rubriques du site, quelle que soit la profondeur de cette hiérarchie.
<B_Secteurs>
<ul>
<BOUCLE_Secteurs(RUBRIQUES){racine}{par num titre}{doublons}>
<li><BOUCLE_articles_plusdunSecteurs(ARTICLES) {id_rubrique} {1,1}><a href="[./(#URL_RUBRIQUE)]" title="[(#_Secteurs:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_Secteurs:TITRE|supprimer_numero)]</a></BOUCLE_articles_plusdunSecteurs><BOUCLE_articles_unseulSecteurs(ARTICLES) {id_rubrique} {0,1}><a href="[./(#URL_ARTICLE)]" title="[(#_Secteurs:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_Secteurs:TITRE|supprimer_numero)]</a></BOUCLE_articles_unseulSecteurs><a href="[./(#URL_RUBRIQUE)]" title="[(#_Secteurs:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_Secteurs:TITRE|supprimer_numero)]</a><//B_articles_unseulSecteurs> <//B_articles_plusdunSecteurs>
<B_Rubriques>
<ul>
<BOUCLE_Rubriques(RUBRIQUES){id_parent}{par num titre}{doublons}>
<li><BOUCLE_articles_plusdun(ARTICLES) {id_rubrique} {1,1}><a href="[./(#URL_RUBRIQUE)]" title="[(#_Rubriques:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_Rubriques:TITRE|supprimer_numero)]</a></BOUCLE_articles_plusdun><BOUCLE_articles_unseul(ARTICLES) {id_rubrique} {0,1}><a href="[./(#URL_ARTICLE)]" title="[(#_Rubriques:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_Rubriques:TITRE|supprimer_numero)]</a></BOUCLE_articles_unseul><a href="[./(#URL_RUBRIQUE)]" title="[(#_Rubriques:DESCRIPTIF|supprimer_tags|attribut_html)]">[(#_Rubriques:TITRE|supprimer_numero)]</a><//B_articles_unseul> <//B_articles_plusdun><BOUCLE_SsRubriques(BOUCLE_Rubriques)></BOUCLE_SsRubriques></li>
</BOUCLE_Rubriques>
</ul>
</B_Rubriques>
</li>
</BOUCLE_Secteurs>
</ul>
</B_Secteurs>
Notez l’usage d’un appel de boucle récursif :
<BOUCLE_SsRubriques(BOUCLE_Rubriques)></BOUCLE_SsRubriques>
Cet appel permet de descendre dans la hiérarchie tant qu’il faut pour parcourir l’ensemble des sous-niveaux.
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |