SPIP - Contrib

[ar] [en] [es] [fr] [it]



Accueil du site > Outils pour squelettes > Tutoriaux pour squelettes

Pour éviter de voir apparaître les notes de bas de pages attachées à un champ quand on ne le veut pas

mercredi 16 juin 2004, par Perline. Dernier ajout samedi 20 octobre 2007


Nous envisageons le cas où des notes sont introduites dans un champ, de manière voulue ou erronée, mais que l’on ne veut pas les faire apparaître sur la page publiée sur le site.


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.

Notes

[1] Dans le cas où un malencontreux [[]] se serait invité.


Répondre à cet article



Suivre la vie du site RSS 2.0 | Plan du site | Espace privé | Charte et vie SPIP-Contrib | SPIP | L'autre.net