Het aantal reacties op een artikel weergeven

Om het aantal forumberichten dat aan een bepaald artikel gekoppeld is, weer te geven, maken we een lus van het type FORUMS die uitsluitend bedoeld is om het aantal resultaten te tellen.

Op het eerste gezicht lijkt dit een gemakkelijke opgave. We moeten gewoon een baken #TOTAL_BOUCLE zien op te nemen. Toch is er wat acrobatiek voor nodig.

Goed alle berichten selecteren

Het eerste detail: we willen alle forumbijdragen die bij het artikel behoren, dus ook de reacties op een bijdrage, enz....

Een eenvoudige lus <BOUCLE_forum(FORUMS) {id_article}> selecteert uitsluitend de bijdragen die direct op het artikel reageren. Maar we willen ook de eventuele reacties op die bijdragen meetellen. Daarvoor kan eventueel een tweede lus binnen de eerste worden opgenomen, maar dat gaan we hier niet doen.
Wanneer we niet geïnteresseerd zijn in de structuur (de hiërarchie), maar alleen alle reacties willen selecteren, kunnen we de voorwaarde {plat} toevoegen. We krijgen dan: <BOUCLE_forum(FORUMS) {id_article} {plat}>

We willen uitsluitend een totaal

Dan gaan we nu het aantal geselecteerde elementen tellen, maar we willen niets van die elementen weergeven, geen titel, geen tekst, zelfs geen spatie en zeker geen regelterugloop! Daarom plaatsen we niets tussen het openende en sluitende baken van de lus: <BOUCLE_forum(FORUMS) {id_article} {plat}></BOUCLE_forum>.

Er zal dus totaal niets worden weergeven, maar na deze lus willen we wel het totaal weergeven. Het baken #TOTAL_BOUCLE Kan niet alleen binnen, maar ook buiten een lus in het conditionele gedeelte worden geplaatst. Dit wordt alleen weergegeven als de lus elementen weergeeft. Er is ook een alternatief conditioneel gedeelte dat wordt getoond als er geen resultaat wordt weergegeven.

Wat je wel duidelijk moet begrijpen is dat SPIP de inhoud van het allternatief conditioneel gedeelte weergeeft als er door de lus niets wordt weergegeven. Dus zelfs als de lus wel elementen selecteerde.

We moeten #TOTAL_BOUCLE dus opnemen in het alternatief conditioneel gedeelte! Bevat het forum van dit artikel geen berichten (#TOTAL_BOUCLE is leeg), dan moeten we dus geen tekst in de vorm van « Het forum bevat N berichten » weergeven. Daarom zetten we de gehele tekst tussen rechte haakjes en het criterium tussen ronde haakjes.

<BOUCLE_hoeveel(FORUMS) {id_article} {plat}></BOUCLE_hoeveel>
[Het forum bevat (#TOTAL_BOUCLE) bericht(en).]
<//B_hoeveel>

Je ziet in dit voorbeeld ook dat voor het eindbaken van een conditioneel gedeelte geen beginbaken vereist is. Je mag het wel vóór de eerste plaatsen, maar dat is alleen noodzakelijk als je iets vóór de lus wilt definiëren of weergeven.

Eén bericht, twee berichten...

Het is allemaal gelukt en de melding van het aantal forumberichten wordt getoond, als er berichten zijn! Maar wel willen het wat mooier maken, want de meervoudsvorm tussen haakjes kan beter...

Er bestaan meerdere mogelijkheden om deze verbetering toe te passen. In dit voorbeeld gebruiken we de filters |<{...} en |?{...,...} die ons kunnen helpen met wat we gaan weergeven, afhankelijk van de waarde van #TOTAL_BOUCLE: [(#TOTAL_BOUCLE|<{2}|?{bericht,berichten})]

We krijgen dus:

<BOUCLE_hoeveel(FORUMS) {id_article} {plat}></BOUCLE_hoeveel>
[Het forum bevat (#TOTAL_BOUCLE) [(#TOTAL_BOUCLE|<{2}|?{bericht,berichten})].]
<//B_hoeveel>

Auteur Hanjo Gepubliceerd op: Aangepast: 21/03/23

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