C’est un poil acrobatique.
À première vue, il est très simple de connaître le nombre d’éléments d’une boucle : il suffit d’utiliser le
code SPIP : #TOTAL_BOUCLE. Ce code peut s’utiliser non seulement à l’intérieur de la boucle, mais aussi (c’est
le seul dans ce cas) dans le texte conditionnel après (le texte qui s’affiche après la boucle si elle contient des éléments)
et le texte conditionnel alternatif (le texte qui s’affiche si la boucle est vide).
Nous devons créer une boucle de type FORUMS, liée à un article, de façon à compter son nombre de résultats.
Première subtilité : nous voulons tous les messages des forums liés à l’article, en comptant les réponses aux messages,
les réponses aux réponses...
Une simple boucle de type :
contient uniquement les messages qui répondent à l’article. Habituellement, pour accéder aux réponses à ces messages,
on inclut une seconde boucle à l’intérieur de celle-ci... Ici, nous voulons que la boucle sélectionne
absolument tous les messages attachés à l’article, sans tenir compte de leur hiérarchie. Pour cela, il faut spécifier le critère « plat »,
qui comme son nom l’indique sert à afficher un forum à plat. Ce qui donne :
Voyons maintenant comment compter les éléments qu’elle contient. La difficulté, ici, c’est que justement cette boucle
ne doit rien afficher ! Elle n’affiche pas le titre des messages, on évitera même de lui faire afficher des espaces ou des
retours à la ligne (sinon votre page HTML contiendra des dizaines de lignes vides, inélégantes) ; l’intérieur de la
boucle n’affiche donc rigoureusement rien, mais on doit afficher, après la boucle, le nombre de résultats.
Une subtilité à bien comprendre : le texte conditionnel alternatif s’affiche si la boucle n’affiche rien ; il est donc affiché même si la boucle sélectionne des éléments (ici des messages de forum) mais qu’elle ne contient aucun affichage.
Nous devons donc placer #TOTAL_BOUCLE dans le texte conditionnel alternatif.
S’il n’y aucun message de forum attaché à l’article, #TOTAL_BOUCLE sera vide, il ne faut donc pas afficher le texte englobant (« il y a N contributions au forum ») dans ce cas.