Découvrez comment j’ai résolu un problème d’affichage en double des notes dans SPIP, tout en gardant un ordre logique dans mon squelette. Une astuce simple qui change tout !
Solution propre pour éviter l’affichage des notes en double.
Récemment, j’ai rencontré un petit casse-tête dans SPIP en ajoutant un champ personnalisé #ABSTRACT à l’objet éditorial article. Tout fonctionnait à merveille, sauf lorsque ce champ comportait un appel de note. À ma grande surprise, la note apparaissait deux fois en bas de la page dans mon squelette article.html ! 😲
Après quelques recherches, j’ai compris que cette anomalie ne venait pas d’un double appel à #NOTES, mais du mécanisme interne de collecte des notes dans SPIP.
Dans SPIP, la collecte des notes est cumulative pour toute la page en cours de calcul. Chaque fois qu’un champ est traité typographiquement (passage par le filtre interne « propre »), les notes qu’il contient sont ajoutées à une pile globale. Cette pile n’est pas réinitialisée entre les champs.
Si un même contenu est traité deux fois au cours du calcul de la page, ses notes peuvent donc être collectées deux fois.
Dans mon cas, l’ordre des balises était :
#TEXTE
#ABSTRACT
#NOTES
Première parade (ancienne configuration)
Il y a deux ans, dans une configuration plus simple de mon squelette, j’avais résolu le problème en forçant un premier calcul silencieux des notes grâce au filtre :
[(#NOTES|couper0)]
Ce filtre déclenche le calcul des notes sans les afficher. Le squelette devenait :
#TEXTE
[(#NOTES|couper0)]
#ABSTRACT
#NOTES
Et cela suffisait.
Mais dans ma configuration actuelle de article.html, cette parade ne fonctionnait plus correctement. Le problème ne venait plus seulement de l’ordre des balises.
Seconde parade (configuration actuelle)
En analysant plus finement le squelette, j’ai constaté qu’un autre champ, affiché en amont, pouvait lui aussi déclencher un traitement typographique. Même vide, #DESCRIPTIF était susceptible d’être traité et donc de participer à la mécanique de collecte.
Or dans SPIP, ce n’est pas #NOTES qui analyse le texte : il affiche simplement ce qui a été collecté (et cumulé) lors des traitements précédents.
La solution structurelle a donc consisté à empêcher #DESCRIPTIF de passer par le traitement typographique automatique :
(#DESCRIPTIF*|textebrut)
L’étoile empêche le traitement standard, et |textebrut affiche le contenu sans typographie. Ainsi, aucun recensement parasite des notes ne peut se produire à ce stade.
Résultat
Les notes ne sont plus collectées deux fois. L’ordre logique des balises est respecté. Et le squelette reste propre.
Deux configurations différentes, deux parades … et une meilleure compréhension des entrailles de SPIP au passage [1].
__________
[1] À preuve le fait que ces notes ne sont plus affichées en double !
En résumé
Découvrez comment forcer le calcul des notes dans SPIP sans les afficher immédiatement, grâce à un filtre simple et efficace. Une solution qui évite les notes en double tout en conservant l’ordre logique d’affichage.[[ Résumé rédigé avec l’aide d’une IA.]] — Résumé généré par l’IA.

Envoyer un commentaire