Réaiguiller un « SIGLE » vers sa définition

Avec un raccourci typographique simple, voici comment faire pointer vos SIGLES obscurs vers leur définition sur Acro.Ecole. C’est évidemment adaptable à d’autres sites comme le wiktionnaire...

En étant un activiste du site « Biotechno pour les Profs », je suis confronté quotidiennement à l’incompréhension de futurs collègues ou de jeunes collègues devant certains sigles et acronymes utilisés dans nos textes.

Jean-Luc NAIL a développé de son côté un dictionnaire assez complet et en constante évolution sur son site

Acro.Ecole.

Depuis plusieurs années je repousse sans cesse la réalisation d’un script pour permettre un réaiguillage automatique des sigles écrits dans les textes vers leurs définitions sur le site Acro.Ecole.

Or, il y a quelques semaines, j’ai découverts que le fait d’encadrer un mot ou une expression par deux crochets et un point d’interrogation transformait ce mot en lien vers la page Wikipedia correspondante.

Voici ce que j’ai saisi dans le texte de cet article pour obtenir le lien ci-dessus :
[?wikipedia]

Je précise que Acro-école est basé sur un ensemble de scripts PHP intitulé acro-dico qui permet à quiconque de réaliser son propre dico de sigle.

Pour arriver au même résultat, j’ai détaillé 2 méthodes différentes. Chacune possède ses avantages et ses inconvénients.

  1. Conception d’un filtre dans mes_fonctions.php3 ;
  2. Configuration du fichier mes_options.php3 pour remplacer le raccourci wikipédia par le raccourci acro-ecole ;

Un exemple de fonctionnement !

Bon, d’accord, pour vous mettre un peu dans le bain, allez voir les sigles de cette brève de Biotechno pour les Profs.

Un simple filtre dans le fichier mes_fonctions.php3

Après avoir posé la question sur la liste de SPIP, Mathieu Lecarme a immédiatement posté une solution hyper simple.

Voyez le code suivant qui est à intégrer à votre fichier mes_fonctions.php3 situé à la racine de votre site. Jean-Luc Nail nous as même gratifié d’une page dédiée à notre filtre ! Il s’agit du filtre dénommé « mon_dico » :

function mon_dico($tartine){
return preg_replace('/\[#(.*)\]/U','<a href="http://acro.ecole.free.fr/spip.php?rech=$1" class="dico">$1</a>',$tartine);
} 

NB : évidemment ce filtre est à ajouter à votre fichier mes_fonctions.php3 entre les balises php qui conviennent (<?php et ?>). Mais si votre fichier mes_fonctions.php3 existe déjà, ces balises de début et de fin de fichier doivent déjà être présentes.

Faire utiliser le filtre par le squelette

Maintenant il faut dire à SPIP quand utiliser ce filtre et où. Ce qui nous intéresse c’est que les sigles présents dans le texte des articles soient liés à Acro.Ecole.

Il faut donc ajouter le filtre comme ceci :

[(#TEXTE|mon_dico)]

On peux également l’ajouter au Post-Scriptum de l’article, ce qui donne, pour une boucle article du fichier article.html :

<BOUCLE_article_principal(ARTICLES) {id_article}>
    [(#LOGO_ARTICLE|left)]
    [(#SURTITRE)]
    [<h1>(#TITRE|supprimer_numero)</h1>]
    [(#SOUSTITRE)]
    [(#DATE|nom_jour)] [(#DATE|affdate).]
    [Site internet&nbsp;: <a href="#URL_SITE">(#NOM_SITE)</a>]
    [(#CHAPO)]
    [(#TEXTE|mon_dico)]
    [(#PS|mon_dico)]
    [(#NOTES)]
</BOUCLE_article_principal>

Bien évidemment, ce filtre est à ajouter partout où l’on en a besoin (comme dans breves.html...).

Quel raccourci utiliser

Si on regarde bien le code ci-dessus, nous avons :
[#(.*)\]
ce qui signifie en bref que le sigle sera redirigé vers Acro.Ecole s’il est formatté de la sorte par le rédacteur de l’article ou de la brève :
[#SIGLE]

Personnaliser l’affichage des sigles liés

Dans le filtre est défini une class=« dico ». Ceci fait référence à la feuille de style du site (CSS). Nous pouvons donc aisément lui ajouter ceci :

/*	---------------------------------------- */
/*	Feuille de style pour le lien acro.ecole */
/*	---------------------------------------- */

a.dico {
	text-decoration:  underline;	
	color: green;
}	

a:hover.dico {
	text-decoration:  overline;	
	}	

Seconde possibilité : configurer le fichier mes_options.php3

Parmis les nombreuses fonctionnalités du fichier /ecrire/mes_options.php3 il y a la possibilité de réaiguiller le raccourci de wikipédia vers une autre adresse.

Nous allons donc créer un fichier /ecrire/mes_options.php3 contenant le code suivant :

<?php
// url utilisée pour le glossaire
// lien vers le glossaire, raccourcis [?mot]
// $GLOBALS['url_glossaire_externe'] = ;

$GLOBALS['url_glossaire_externe'] = "http://acro.ecole.free.fr/spip.php?rech=" ;
?>  

Dans ce cas de figure, vous n’avez besoin de rien faire d’autre. Vous saisissez simplement dans votre texte le code de wikipédia :

[?mot]

pour chaque sigle que vous voulez réaiguiller vers acro-école.

Le désavantage, c’est que vous perdez la possibilité de renvoyer des mots vers leur définition sur wikipédia.

Ce filtre est facilement adaptable et vous permettra de mettre en place des raccourcis typographiques pour des fonctionnalités propres à votre site (comme acro.ecole qui est destiné avant tout pour les sites d’établissements scolaires...).

Note : on peux même créer une page du site dédiée à l’exploitation du résultat de la recherche renvoyé par acroécole. Comme ça on ne sort plus du site pour aller chercher la définition des sigles, mais ils s’affichent à l’intérieur même du site. Ce sera certainement le sujet d’un prochain article sur spip-contrib :-)

Discussion

2 discussions

  • 4
    François Le Ralle

    L’idéal évidemment, ce serait d’avoir un dico par défaut, et de pouvoir en spécifier un à la volée [?terme->mondico] mondico étant un nom symbolique défini dans la config ou une url complete.

    Le nom symbolique a l’avantage de pouvoir changer une URL globalement.

    • Raphaël Rousseau

      Voilà une sorte de filtre qui permet de gérer ce dico à la volée (on suppose que « la volée » signifie avoir recensé quelques dico et autres lexiques au prélable, ici Wikipedia francophone, Wikipedia anglophone et un lexique par défaut) :

      function x_dico($tartine){
      $dicos = array(
              'fwp' => 'http://fr.wikipedia.org/wiki/',
              'wp' => 'http://www.wikipedia.org/wiki/',
              'lexique' => '/spip.php?rech=' );
      return preg_replace('/\[#(\S+)\s+(.*)\]/Ue',"sprintf('<a href=\"%s$2\" class=\"dico\">$2</a>', \$dicos[\"$1\"]);",$tartine);
      }

      ============================ Texte Article test ============================

      Voici un article qui parle de [#fwp GNU] et pas d'[#wp Emacs], dommage !
      
      Par contre, il parle  d'[#lexique écologie numérique].

      ============================ /Texte Article test ============================

      Dans le squelette, j’ai (#INTRODUCTION|x_dico) ou (#TEXTE|x_dico)

    • Bionet

      Merci pour cette contribution. L’article devient enfin vraiment intéressant avec ce filtre pluriel.

    • Bon, comme ça plait, j’améliore un peu le code ! ;-)

      function x_dico($tartine){
              $dicos = array(
                              'fwp' => 'http://fr.wikipedia.org/wiki/%s',
                              'wp' => 'http://www.wikipedia.org/wiki/%s',
                              'lexique' => '/spip.php?rech=%s' );
              return preg_replace('/\[#(\S+)\s+(.*)\]/Ue',
                      "sprintf('<a href=\"'.\$dicos['$1'].'\" class=\"dico\">%s</a>', urlencode('$2'),'$2');",$tartine);
      }

      Ca ne change pas les fonctionnalités, mais c’est plus générique, comme solution.
      Pour ajouter un nouveau dico, il faut lui choisir un sigle qui sera utilisé dans la balise de l’article et lui associer l’URL du dico/lexique où %s sera remplacé par ce qui sera entre les crochets.

      Un exemple vaut mille discours :
      Je veux pouvoir mettre des liens vers Google-News avec un raccourci de la forme [#ggn Logiciel libre].

    • Raphaël Rousseau

      Ooups, j’ai confirmé au lieu de continuer à modifier...

      J’en étais à Un exemple vaut mille discours : Je veux pouvoir mettre des liens vers Google-News avec un raccourci de la forme [#ggn Logiciel libre].

      Si je vais avec mon butineur favori sur Google-News pour trouver les nouvelles relatives au Logiciel Libre (au hasard), je me rends compte que l’URL est : http://news.google.fr/news?hl=fr&q=logiciel+libre&ie=ISO-8859-1 (bon, j’ai un peu ôté de l’URL quelques paramètres peu importants).

      Si je veux ajouter ce « dico » à mes raccourcis possible, je modifie mon filtre de la sorte :

              $dicos = array(
                             'fwp' => 'http://fr.wikipedia.org/wiki/%s',
                             'wp' => 'http://www.wikipedia.org/wiki/%s',
                             'lexique' => '/spip.php?rech=%s' );

      Devient

              $dicos = array(
                             'fwp' => 'http://fr.wikipedia.org/wiki/%s',
                             'wp' => 'http://www.wikipedia.org/wiki/%s',
                             'ggn'=> 'http://news.google.fr/news?hl=fr&q=%s&ie=ISO-8859-1', # Ajout ici
                             'lexique' => '/spip.php?rech=%s' );

      Et à partir de maintenant, je peux faire des liens vers la page d’actualités de Google avec [#ggn les termes que je veux] !

      Note aux auteurs : les liens ne sont pas visibles dans l’interface privée, qui ne fait pas appel aux filtres, ne vous inquiétez pas, c’est normal !

      A quand l’intégration dans les raccourcis standards de SPIP ?

    Répondre à ce message

  • On peux certainement même également ajouter un javascript du genre :

    <a href="http://acro.ecole.free.fr/spip.php?rech=$1" class="dico" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=450'); return false;">$1</a>

    Ce qui donnerait le script suivant (non testé) :

    function mon_dico($tartine){
    return preg_replace('/\[#(.*)\]/U','<a href="http://acro.ecole.free.fr/spip.php?rech=$1" class="dico" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=450'); return false;">$1</a>',$tartine);
    }

    Répondre à ce message

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