Méthode 1 : la balise vide
Le principe est assez simple :
- dans SPIP, on peut appliquer un filtre directement sur une balise ou sur un autre filtre,
- le filtre
|sinon{'chaîne'}
retourne « chaîne » si la balise sur laquelle on l’applique ne retourne rien, -
#REM
est une balise pour mettre des commentaires et ne retourne jamais rien
=> donc [(#REM|sinon{'chaîne'})]
retournera toujours « chaîne »
ainsi, on peut appliquer des filtres sur ce texte si on ajoute des filtres après |sinon
. Par exemple :
[(#REM|sinon{'chaîne'}|unique)]
On peut utiliser cette astuce pour le filtre |unique
et cacher des parties de boucles qui utilisent ce filtre.
On peut aussi imaginer qu’on a un filtre compteur qui somme des balises :
function compteur($valeur) {
static $compteur;
$compteur += $valeur;
return $compteur;
}
et vouloir l’initialiser :
[(#REM|sinon{10}|compteur)]
Méthode 2 : la chaîne localisée
SPIP permet d’avoir des chaînes localisées, stoquées dans des fichiers local_fr.php3, local_en.php3 etc... en fonction de leur langue. On peut ensuite les appeler dans un squelette avec : <:chaîne:>
Dans SPIP 1.8.2 on peut appliquer des filtres sur ces balises de localisation. Ainsi, on peut appliquer un filtre sur une chaîne statique (potentiellement différente dans chaque langue du site) avec :
<:chaîne|filtre:>
Concrètement
Voici une application qui utilise la première méthode avec le filtre |unique.
On veut afficher la liste des auteurs de forums sur le site. Mais chez moi, y’a un méchant spameur qui s’appelle « Mortimer ». Je ne veux pas l’afficher dans la liste. j’ai donc ajouté :
[(#REM|sinon{'Mortimer'}|unique|?{'',''})]
pour que la prochaine fois que le filtre |unique est appliqué au nom ’Mortimer’ (dans la boucle d’affichage des forums) il ne soit pas afficher.
<BOUCLE_articles(ARTICLES) {tout}>
<BOUCLE_lesforums(FORUMS) {id_article} {plat} {doublons lesforums}>
</BOUCLE_lesforums>
</BOUCLE_articles>
[(#REM|sinon{'Mortimer'}|unique|?{'',''})]
<B_affiche_auteurs>
<ul>
<BOUCLE_affiche_auteurs(FORUMS) {!doublons lesforums} {par auteur}>
[<ul>(#NOM|ucfirst|unique)</ul>]
</BOUCLE_affiche_auteurs>
</ul>
</B_affiche_auteurs>
Remarquez que, dans cet exemple, on utlise |ucfirst pour passer la première lettre de chaque nom en majuscule, on ne peut donc pas simplement utiliser le critère {auteur != Mortimer}
puisqu’on n’est pas sûr que tous les messages soient signés avec le nom en majuscule.
Aucune discussion
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 : |