Supprimer les appels de notes de bas de page

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

A la suite du tutoriel « Ne pas voir apparaître les notes de bas de pages attachées à un champ », une autre colle s’est posée : comment faire pour que les appels de notes soient invisibles.

Mais pourquoi donc ne voudrait-on pas voir les appels de note ?

Par exemple, dans l’affichage d’une rubrique, on affiche généralement la balise #CHAPO ou #INTRODUCTION de chacun des articles de la rubrique.

Généralement on n’affiche pas à cet endroit-là les #NOTES.

Donc, si le texte contient une note de bas de page, on verra l’appel de note, mais pas la note.

Comment faire ?

Créons la fonction PHP |supprimer_appel_notes à cet effet.

Fonction qui consiste à remplacer la constante _NOTES_RACCOURCI par rien du tout "".

function supprimer_appel_notes($texte){
  $texte = preg_replace(_NOTES_RACCOURCI,"",$texte);
      return $texte;
}

Nous allons déposer cette fonction dans le fichier mes_fonctions.php, à créer, s’il n’existe pas, et à déposer dans le dossier squelettes.

Prenons l’exemple de suppression des appels de notes dans la balise #INTRODUCTION, ce serait similaire pour toute balise, #CHAPO, #DESCRIPTIF, #TEXTE, etc., du squelette en question.

À l’origine nous avons la balise [(#INTRODUCTION)].
Nous lui appliquons le filtre |supprimer_appel_notes :

[(#INTRODUCTION|supprimer_appel_notes)]

Mais ça ne marche pas !
En effet, la mise en forme que fait automatiquement SPIP sur cette balise ne permet pas au filtre de s’appliquer APRÈS ce passage.

Nous allons donc empêcher le traitement de mise en forme automatique.
Pour cela, SPIP met à notre disposition l’étoile

*

attachée à la balise.

Car #INTRODUCTION* affiche le contenu brut de la balise, excepté la protection contre javascript.

Résultat de notre balise :

[(#INTRODUCTION*|supprimer_appel_notes)]

Mais en faisant cela, nous avons supprimé l’application par défaut du filtre |propre
 [1], il reste encore à le remettre.

Et voilà donc la forme de la balise, au final, dans le squelette :

[(#INTRODUCTION*|supprimer_appel_notes|propre)]

Pour mémoire, la solution donnée initialement, ne pas afficher les appels de note, solution par CSS

Cette solution permet de ne pas afficher pas les appels de notes, mais seulement de ne pas les afficher. Elle ne supprime pas les appels de notes.
On voit donc ces appels dans le code source final.

La classe attribuée aux appels de notes, par défaut dans les squelettes, est .spip_note_ref.

Pour notre part, nous allons créer une classe supplémentaire .appel_note_invisible.

Dans la feuille de style perso on va rendre invisible à l’écran les éléments auxquels on attribue cette classe :

.appel_note_invisible .spip_note_ref {display: none;}

Dans le squelette, on va attribuer la classe .appel_note_invisible à la balise qui affiche le texte dans lequel on ne veut pas voir apparaître les appels de notes.

[<span class="appel_note_invisible">(#INTRODUCTION)</span>]

Ici, c’est la balise #INTRODUCTION [2] qui n’affichera pas les appels de note que le texte peut contenir.

Le code source

En regardant le code source de la page, vous y verrez toujours l’appel de note.

Notes

[1Ce filtre traite les paragraphes et convertit les raccourcis SPIP (italiques, gras, intertitres, etc.) en html. Il est appliqué par défaut aux textes longs (#TEXTE#CHAPO, etc.).

[2Qui affiche le descriptif de l’article, sinon les 600 premiers caractères du début de l’article (chapeau puis texte).

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom