Ne pas voir apparaître les notes de bas de pages attachées à un champ

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

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

Dernière modification de cette page le 26 février 2015

Discussion

3 discussions

  • 1

    La réppartition des notes sont affichés

    • Bonjour,
      Qu’appelez-vous « la répartition » des notes ?
      Avez-vous une copie d’écran ?
      Merci.

    Répondre à ce message

  • 8

    Salut Perline,

    Pour compléter/enrichir cette (utile) contrib, peut-être serait-il pertinent de fournir un filtre permettant de supprimer les appels aux notes de bas de page dans le texte.

    Dans certains cas (par exemple sur une page de sommaire sur laquelle on reprend un morceau de texte), ces appels sont inutiles et intempestifs.

    Perso, j’ai résolu le problème avec un petit filtre adapté à mes notes de bas de page (j’utilise des pipes pour les délimiter) :

    // Petit filtre assez particulier: supprimer les appels de note dans
    // un texte préalablement passé par "textebrut" ou "couper"
    function virer_notes($texte) {
        $texte =  ereg_replace(' \|([0-9]+)\|', '', $texte);
        return $texte;
    }

    Mais, écrit comme ça, c’est évidemment pas l’idéal.

    François

    • Christophe Noisette

      C’est exactement ce que je cherche mais avec la version classique des notes de bas de pages... c’est-à-dire qu’on insère dans le texte /ecrire/ avec le raccourci [1]... Avez-vous un truc, filtre ou code, à me donner pour ne pas avoir les appels de notes de bas de page dans un /patron/ (liste diffusion, spip-listes). Merci beaucoup
      Christophe

    • Bonjour Christophe, ça fait un bail ;)

      Je ne comprends pas la question car la contrib est justement pour les notes avec raccourci.
      Donc, il te suffit d’utiliser cette astuce (commentaire et réduction) pour ne pas voir les notes sur le site public.
      As-tu essayé ?
      Sinon, peux-tu préciser ta demande ?

      Merci.
      PS : Parles-tu d’un patron de SPIP listes ?

    • Christophe Noisette

      Salut Perline,
      Je cherche à faire ce qu’à fait r François Schreuer mais avec les notes classiques. En gros, dans un patron de spi-liste, j’affiche les #CHAPO de mes articles sélectionnés, mais j’ai parfois des appels de notes [1] dans ces #CHAPO. Or je ne veux pas que ces appels de note apparaissent dans le #CHAPO du patron de notre newsletter. Si je fais #CHAPO*, je n’ai plus du tout de mis en forme et donc au lieu des appels de note, j’ai les notes in extenso, ce qui n’est pas beaucoup plus pertinent. Encore merci à tous. Bonne journée.

    • Qu’appelles-tu les « notes classiques » ? Il y a note ou pas, les notes sont les notes et indifférenciées.
      Donc je ne comprends pas.
      Tes patrons sont en HTML ? Donc tu peux utiliser l’article.
      Sinon, tu fais ton patron en texte brut ? Et ce serait ça le problème ?
      Ou bien je n’ai pas compris. Peux-tu préciser ?

    • Christophe Noisette

      Salut, je crois que je me suis pas fait comprendre. Sur la page suivante : http://www.infogm.org/1068-alert-ogm-l-actualite-des-ogm-dans-le-monde-fevrier-2015 qui est le version en ligne de notre newsletter Alert’OGM, j’aimerais que les appels de note n’apparaissent pas. Je ne parle pas des notes mais juste des appels, qui sont dans le #CHAPO. Suis-je plus clair, ainsi ? En l’espérant. Amitiés et bonne journée.

    • Ah, oui, je n’avais pas compris, désolée :(
      Tu m’as donné du fil à retordre, mais voilà une solution, assez propre selon moi.

      Dans ton squelette :
      [<span class="appelnoteinvisible">(#INTRODUCTION)</span>]
      Dans ta feuille de style :
      .appelnoteinvisible .spip_note_ref {display: none;}

      Je l’ai testée, elle est OK.
      Donne moi un retour, si ça te va aussi, je l’intègre à l’article.

    • Christophe Noisette

      Parfait : super, génial, etc.
      Je l’ai donc mis dans mon patron pour spip-list.
      Ca donne au niveau du code

      <style type="text/css">
      .appelnoteinvisible .spip_note_ref {display: none;}
      </style> 

      Et dans le corps du texte

      [<div class="chapo" style="margin-bottom: 1.20em; line-height: 1.60em; font-family: Verdana;">
      <span class="appelnoteinvisible">(#CHAPO)</span></div>]

      On peut sans doute faire plus simple, mais là, j’ai ce que je veux.
      Merci Perline
      Christophe

    • Conclusion-bilan de cette question : la solution via fonction PHP, qui fait réellement disparaître les appels de notes, est développée dans un article à part.

    Répondre à ce message

  • 4

    Bonjour

    Je suis confronté à un autre problème. Si je cite deux fois la même note dans un article, je la vois apparaître deux fois en bas de page. Existe-t-il un moyen d’éviter celà, et de n’afficher qu’une seule fois la note quelque soit le nombre d’appel à cette note dans le texte ?

    Merci d’avance

    • Perline

      De quelle manière appelles-tu les notes ?

      Si tu écris de nouveau les doubles crochets avec un texte à l’intérieur, alors oui, Spip ne voit pas le contenu mais juste l’appel, et c’est pour lui deux notes distinctes.

    • La première fois je fais [1] et puis plus loin dans l’article [2]. Ce qui est étonnant, c’est que dans la prévisualisation dans la partie rédacteur tout est OK (je ne vois la note qu’une seule fois), mais c’est dans la partie publique du site que ça fait le bug... Je les appelle comme ça dans le squelette : (#NOTES après avoir appelé le texte.

      Voici un lien vers l’article qui me pose problème si vous voulez aller voir...
      http://www.exobio.cnrs.fr/article.php3?id_article=28

    • Je ne saurais pas expliquer comment j’ai fait, mais j’ai résolu le problème...

    • Pour répondre à cette ancienne question, le raccourcis des notes dont on choisit le numéro est : [[<num>texte]].

      Du coup, [[<3>]] reverra à la note n°3. Le petit inconvénient, c’est qu’aucun texte de survol n’est affiché dans ce cas, puisque le texte est inexistant... Si on choisit de mettre [[<3>mon texte]] alors que la note n°3 existe déjà, SPIP créera deux notes de même numéro...

      Ceci est une remarque pour SPIP SVN au 31/10/2007.

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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