Un exemple du problème posé
Votre site, n’affichant pas dans une même page le descriptif et le contenu d’un article, vous avez pris l’habitude de remplir les champs de vos articles en copiant dans le descriptif le chapô du texte, lorsque cela est pertinent.
Par ailleurs, ce descriptif est utilisé dans les termes conditionnels des images alt
, ou les infos bulles des liens title
, ou encore dans les meta
pour le référencement.
Apparaît alors devant vos yeux incrédules, malgré le taux d’alcoolémie égal à zéro, ces notes, deux fois en bas de page, dans la rubrique NOTES, celle qui est générée par la balise #NOTES
.
Pourquoi cette vision gémellaire ?
}
#NOTES
est calculé à partir des champs #INTRODUCTION
, #DESCRIPTIF
, #CHAPO
et #TEXTE
.
Calculé à chaque fois qu’apparaît l’une de ces balises, et vidé à chaque affichage de #NOTES
.
D’où l’apparition, une première fois de #NOTES
lié au #DESCRIPTIF
, puis remise à zéro du contenu de #NOTES
, avant réapparition, qu’on aurait pu croire un temps miraculeuse, liée au #TEXTE
.
Problème
Si l’on demande d’afficher les notes, elles s’affichent.
Or, je veux que les bonnes notes s’affichent, mais pas les mauvaises notes (qui ne veut pas cela ?).
Autrement dit, si je veux que les notes liées au champ qui s’affiche réellement -#TEXTE
- s’affichent elles-aussi réellement, en revanche, je ne veux absolument pas que celles qui sont liées aux champs de type « information annexe » s’affichent, elles.
Une solution
Comme la balise #NOTES
se vide après affichage ; pour la vider, nous allons donc l’afficher.
Nous aurons donc, par exemple :
<a href="#URL_ARTICLE" title="#DESCRIPTIF">#TITRE</a>
#NOTES
Oui, mais, justement, allez-vous protester, c’est cela qu’on ne veut pas : l’afficher !
Nous allons donc l’afficher sans l’afficher : en l’affichant en « commentaire ».
<!-- #NOTES -->
Et pour éviter de perdre de la place et de la netteté dans le code html résultant, nous allons réduire la chaîne de caractère que sont les notes en une toute petite chaîne anodine, grâce à un filtre php.
On peut choisir, par exemple le filtre count
ou sizeof
, qui retournera 0 (zéro) s’il n’y a pas de note et 1 (un) sinon.
Ou bien le filtre strlen
qui retourne la longueur de la chaîne.
Et puisqu’on ne veut pas afficher ce qui serait totalement inutile, les commentaires vides, les balises de commentaires seront posées entre les crochets.
Résultat : [<!--(#NOTES|sizeof)-->]
affichera, soit rien s’il n’y a pas de note, soit, s’il y en a, un commentaire « 1 » ou « 0 » [1], permettant de ne pas afficher les mauvaises notes et de laisser le champ libre pour afficher les bonnes notes.
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 : |