Le filtre |unique
retourne la valeur de la balise à laquelle il s’applique seulement si c’est la première fois qu’elle est rencontrée.
Il s’applique donc sur une balise placée à l’intérieur d’une boucle.
Il est possible, pour différencier plusieurs utilisations indépendantes au sein de la boucle, de passer un argument de nommage à ce filtre.
Par exemple : [(#ID_SECTEUR|unique{en_tete})]
n’aura pas d’incidence sur (n’empêchera pas l’affichage de) : [(#ID_SECTEUR|unique{corps})]
.
Le filtre accepte aussi un deuxième argument : « 1 » pour afficher le nombre de fois où la balise a été filtrée.
Par exemple : [(#ID_SECTEUR|unique{corps, 1})]
affichera le total correspondant au nombre de fois où #ID_SECTEUR aura été filtré par |unique{corps}
.
On préfèrera toutefois à cette notation l’utilisation (plus économique) de la balise spécifique #TOTAL_UNIQUE{corps}
[1].
- Le filtre |unique
peut être intéressant pour, par exemple, afficher une liste d’articles par date :
<BOUCLE_blog(ARTICLES) {!par date} {"<br>"}>
[<hr><h1>(#DATE|affdate_mois_annee|unique)</h1>]
#TITRE ...
</BOUCLE_blog>
La date ne sera affichée qu’à chaque changement de mois.
Autre exemple :
<BOUCLE_blog2(ARTICLES) {par date} {inverse}>
[<hr><h1>(#DATE|annee|unique)</h1>]
[<h2>(#DATE|affdate{'Y-m'}|unique|nom_mois)</h2>]
<a href="#URL_ARTICLE">#TITRE</a><br />
</BOUCLE_blog2>
affichera une liste ressemblant à :
2022
mars
article de mars
autre article de mars
février
article de février
2021
décembre
un article
Dans ce dernier exemple, on utilise la notation affdate{'Y-m'}
pour afficher le nom du mois à chaque changement d’année. En effet :
- si l’on ne faisait que
[(#DATE|nom_mois|unique)]
, les noms de mois ne seraient affichés que la première année ; - si le filtrage était
[(#DATE|unique|nom_mois)]
, on afficherait toutes les dates. En effet,#DATE
retourne une date complète qui contient aussi les heures, minutes et secondes. Il y a donc une grande probabilité que les dates complètes de deux articles publiés le même jours soient différentes.
C’est pourquoi on ne garde que le mois et l’année de la date avant de la passer au filtre unique.