Idée
Dans certain cas, on veut pouvoir faire un affichage un tout petit peu différent pour le premier — ou le dernier — élément retourné par une boucle.
Par exemple, dans une liste d’article, on peut vouloir que le premier <li>
ait un cadre en haut et le dernier un cadre en bas.
Principe
Avec le filtre de test d’égalité, on peut donc tester si le #COMPTEUR_BOUCLE est égal au #TOTAL_BOUCLE de la façon suivante :
[(#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|?{'dernière',''})]
ou si le #COMPTEUR_BOUCLE est égal à 1 :
[(#COMPTEUR_BOUCLE|=={1}|?{'première',''})]
Exemples
Ici, on donne une « class » différente au premier élément de la liste et au dernier :
<B_art>
<ul>
<BOUCLE_art(ARTICLES) {0,10}>
<li class="liste[(#COMPTEUR_BOUCLE|=={1}|?{'prems',''})][(#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|?{'derr',''})]">
#TITRE
</li>
</BOUCLE_art>
</ul>
</B_art>
Dans ce deuxième exemple, on affiche une liste d’auteurs d’un article, en mettant des virgules entre les auteurs et un « et » pour le dernier auteur : « A, B et C ».
<BOUCLE_aut(AUTEURS) {id_article} {par nom} {" "}>
[(#COMPTEUR_BOUCLE|=={1}|?{'',' '})
[(#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|?{'et',','})]
]
#NOM
</BOUCLE_aut>
On regarde d’abord si on n’est pas au début de la boucle. Si c’est le cas, il ne faut rien afficher, on génère donc une chaîne vide avec le filtre |?
.
Si on n’est pas au début de la boucle, on génère une chaîne non vide, on va donc afficher le code optionnel.
Celui-ci teste si on est à la fin d’une boucle. Si c’est le cas, on affiche un « et », sinon on va afficher une virgule « , ».
Discussions par date d’activité
3 discussions
bonjour ;
Sujet certes un peu âgé, mais cela vient de m’enlever une énorme épine du pied sous spip 3 !
Très grand merci.
Juste un bémol : la doc officiel n’est pas toujours très facile à aborder.
Répondre à ce message
mais ça ne marche pas avec une boucle récursive ...
en fait, c’est #TOTAL_BOUCLE qui ne fonctionne pas avec les boucles récursives : il vaut 0 dès le deuxième élément de la liste ... (sous SPIP 1.8.2 e)
Est-ce que le problème a été résolu depuis (1.8.3 et/ou 1.9) ?
Répondre à ce message
Et où est la doc sur le test d’égalité ?
Dans la doc officielle bien sûr :-P
Une recherche le trouve très bien même.
Répondre à ce message
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 : |