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 :-)

updated on 2 October 2019

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 ?

    Reply to this 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);
    }

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom