Mostrar el número de missatges del fòrum que responen a un article

Per mostrar el número de missatges del fòrum lligat a un article, hem de crear un bucle del tipus FORUMS, lligat a un article, per tal de comptar el seu número de resultats.

A simple vista, és molt simple conèixer el número d’elements d’un bucle: n’hi ha prou en utilitzar l’etiqueta: #TOTAL_BOUCLE. Però el seu ús una mica acrobàtic.

Seleccionar bé tots els missatges

Primera subtilesa: volem tots els missatges dels fòrums relacionats amb l’article, comptant les respostes als missatges, les respostes a les respostes...

Un simple bucle del tipus: <BOUCLE_forum(FORUMS){id_article}> selecciona només els missatges que responen directament a l’article. Per accedir a les respostes a aquests missatges, s’inclou habitualment un segon bucle a l’interior d’aquest, però això no és el que nosaltres desitgem fer aquí. _Per a poder-los comptar tots, volem que el bucle seleccioni absolutament tots els missatges del fòrum lligat a l’article, sense tenir en compte la seva jerarquia. Per això, fa falta especificar el criteri {plat}, que tal i com el seu nom indica serveix per mostrar un fòrum planerament. El que ens dona: <BOUCLE_forum(FORUMS) {id_article} {plat}>

Mostrar només el total

Veiem ara com comptar els elements que conté. Aquí la dificultat és que justament aquest bucle no ha de mostrar res! No mostra ni els missatges ni el seu títol, i evitarem també fer-li mostrar espais o salts de línia (sinó el vostre codi HTML final contindrà desenes de línies buides, poc elegants), no deixant tampoc cap espai entre els dos tags que obren i tanquen el bucle: <BOUCLE_forum(FORUMS) {id_article} {plat}></BOUCLE_forum>.

Per tant, l’interior del bucle no mostra absolutament res, però hem de mostrar, després del bucle, el número de resultats. L’etiqueta #TOTAL_BOUCLE es pot utilitzar no només a l’interior del bucle, sinó també (és la única en aquest cas) a dins del text condicional desprès (el text que es mostra desprès del bucle si conté elements) i el text condicional alternatiu (el text que es mostra si el bucle està buit).

Una subtilesa que cal comprendre bé: el text condicional alternatiu es mostra si el bucle no troba cap resposta; per tant, es mostra també si el bucle selecciona alguns elements (aquí els missatges del fòrum) però no conté cap presentació.

Hem de situar, doncs, #TOTAL_BOUCLE en el text condicional alternatiu. Si no hi ha cap missatge de fòrum lligat a l’article, #TOTAL_BOUCLE estarà buit, per tant no fa falta mostrar el text que conté («hi ha N missatge(s) de fòrum») en aquest cas.

<BOUCLE_combien(FORUMS) {id_article} {plat}></BOUCLE_combien>
[Il y a (#TOTAL_BOUCLE) message(s) de forum.]
<//B_combien>

Un missatge, diversos missatges...

A partir d’ara mostrem el número de missatges, si n’hi ha. Però volem fer-ho millor: desitgem que el terme «missatge» s’acordi automàticament en singular quan el bucle trobi només un únic resultat, i en plural quan en trobi diversos.

Per això, farem servir els filtres de test |=={...} i |?{...,...} (introduïts amb SPIP 1.8) per tal d’acordar «missatge» segons el valor de #TOTAL_BOUCLE : [(#TOTAL_BOUCLE|=={1}|?{message,messages})]

El que ens dóna, per tant:

<BOUCLE_combien(FORUMS) {id_article} {plat}></BOUCLE_combien>
[Il y a (#TOTAL_BOUCLE) [(#TOTAL_BOUCLE|=={1}|?{message,messages})] de forum.]
<//B_combien>

Autor merce Publié le : Mis à jour : 21/03/23

Traductions : català, English, Español, français, italiano, Nederlands, Türkçe