SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 349 visiteurs en ce moment

Accueil > Rédaction > Glossaires > Un glossaire interne

Un glossaire interne

7 octobre 2003 – par François Schreuer – 31 commentaires

1 vote

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Fonctionnalité désormais intégrée au Couteau Suisse : disponible pour tout SPIP !

Votre site utilise un vocabulaire technique spécialisé, vous avez une tendance maladive à jargonner sans vous en rendre compte, voici une solution pour que votre prose reste néanmoins accessible au commun des mortels.

Quelques mots d’introduction

Ce glossaire présente les caractéristiques suivantes :

-  Il est interne. Ce glossaire ne fait pas appel à des ressources extérieures. Il exploite un glossaire interne au site (que nous allons créer en utilisant des brèves dans une rubrique dédiée). Il est donc typiquement dédié à des sites très spécialisés, dont le centre d’intérêt fait appel à un vocabulaire très spécifique. Par exemple, si vous créez un site parlant d’architecture antique, vous pourrez définir les mots métope, triglyphe ou architrave si vous craignez que vos visiteurs ignorent ce dont il s’agit.

-  Il est automatique. Contrairement au raccourci typographique existant actuellement dans SPIP qui renvoie vers Wikipedia (dont on apprécie ou non la qualité des articles ; perso : bof), qui demande une intervention humaine chaque fois qu’on veut créer un lien, le principe du présent script est d’automatiser le référencement. Concrètement, il prendra la forme d’un filtre (à ajouter dans mes_fonctions.php3) à appliquer sur chaque partie de texte où l’on souhaite voir se créer des liens vers le glossaire. Le filtre va parser le texte, y reconnaître les occurences des mots qu’il « connaît ».

Créer les données

Le contenu en lui-même du glossaire sera « physiquement » situé dans une rubrique, que nous appellerons, fort originallement, glossaire. Chaque entrée de notre petit dictionnaire prendra la forme d’une brève, le titre étant le mot lui-même (seul : sans article, pluriel particulier ou autres informations) ; le texte de la brève étant la définition du mot.

Le filtre

Et voici le code de la fonction

N’oubliez pas de configurer le script :

-  en choisissant de remplacer toutes les occurences du mot (en attribuant la valeur 0 à la variable $eviter_doublons) ou uniquement la première (valeur 1). La fonction first_replace, donnée ici, est nécessaire si vous ne souhaitez afficher que la première occurence. Notez que ce option évitant les doublons ne fonctionne qu’au sein d’un seul champ : si plusieurs champs sur une même page utilisent le filtre, il est possible qu’un même mot soit lié au glossaire plusieurs fois.

-  en précisant l’id_rubrique de la rubrique contenant le glossaire ;

-  en configurant correctement l’URL. Si vous utilisez les réécritures Apache (rewrite rules), remplacez l’expression breve.php3?id_breve=".$o[id_breve]." par breve".$o[id_breve].".html

-  en configurant le CSS (ici, j’ai nommé la classe définissant les liens .glossaire mais vous pouvez évidemment changer tout cela).

Appeler la fonction

La fonction s’appelle comme tout autre filtre de SPIP. Par exemple :

Pour ceux qui veulent voir à quoi ça ressemble, un exemple présentant l’utilisation de quelques entrées du glossaire est visible sur http://tchouktchouk.eu.org/article128.html (il s’agit d’un site qui parle de trains).

Quelques mots encore

-  Ce filtre requiert pas mal de capacité de calcul de la part du serveur, il est donc fortement conseillé de procéder à quelques tests avant de l’utiliser sur votre site. Quoi qu’il en soit, l’utiliser avec parcimonie et/ou dans des squelettes dont la durée de conservation dans le cache est longue.

-  Pour que les pages ne deviennent pas illisibles sous la profusion de liens, il me semble préférable, dans la mise en page, d’opter pour un mode d’affichage discret : en ce qui me concerne, j’utilise des liens non soulignés de la même couleur que le texte. Ils ne deviennent visibles qu’au passage de la souris.

-  On utilise ici des brèves pour stocker les entrées du glossaire : on pourrait aussi réserver un groupe de mots-clés à cet usage. Ca ne change pas grand-chose. A vous de voir la manière dont vous préférer opérer.

Pour la suite

Pour ceux qui auraient envie de poursuivre le travail entamé ici, voici quelques idées :

-  Il faudrait réfléchir à la question des formes modifiées des mots du glossaire (conjugaisons d’un verbe, pluriel d’un nom), qui ne sont pas reconnues actuellement. Il en va de même pour les mots qui acceptent indifférement plusieurs orthographes et autres problèmes du même accabit (on ne parle même pas ici du multilinguisme).

-  Il serait intéressant d’écrire une option permettant l’affichage des définitions en javascript : au passage de la souris sur une occurence d’un mot connu, une petite boîte contenant la description du mot s’afficherait.

-  Enfin, il serait utile d’interfacer cette fonction avec inc-urls-dist.php3 pour faire en sorte que l’écriture des URL se fasse correctement (en mode « standard » ou en mode « html ») sans qu’une intervention soit nécessaire dans le code.

P.-S.

Voir l’intégration dans le Le Couteau Suisse : Un glossaire interne pour vos sites !

Dernière modification de cette page le 14 août 2014

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 28 mai 2007 à 03:34, par Patrice Vanneufville En réponse à : Un glossaire interne

    Bonjour,

    Un glossaire analogue a été pris en charge par le Couteau Suisse.
    Pour plus d’infos, c’est ici : Un glossaire interne pour vos sites.

    Entre autres :
    -  Les définitions sont stockées par mots-clés : groupe « Glossaire »
    -  De nombreuses balises HTML sont préservées
    -  Le survol de la souris affiche directement la définition du mot.
    -  Le cadre de définition est configurable par css
    -  Pas de nouvelle fenêtre ouverte (popup)
    -  La recherche est insensible à la casse.
    -  Pas de filtre à ajouter dans le squelette

    Répondre à ce message

  • Le 23 mai 2004 à 23:18, par kate En réponse à : le glossaire en javascript ?

    Je me suis penchée sur la question du javascript.

    J’ai installé le filtre glossaire (rubrique), ça fonctionne nickel.

    J’ai le fichier javascript qu’il me faut. Il afficherait la définition du mot dans la colonne de gauche (qui est vide dans le squelette article de mon site) à hauteur du mot sur lequel on passe la souris.

    Maintenant je dois faire en sorte que les données des brèves/définitions soient prises en compte comme variables javascript. Je me dis qu’il faut peut-être employer le filtre additionnel |texte_script, mais où ?

    Si qqn pouvait m’éclairer sur l’étape suivante, ce serait super. Merci.

    • Le 25 mai 2004 à 17:23, par François Schreuer En réponse à : > le glossaire en javascript ?

      Excellente nouvelle.

      Pour récupérer la chaîne de définition, il suffit en principe de le demander dans la fonction :

      Dès ce moment, $o[texte] contient la définition du mot courant.

      J’ai une seconde version du glossaire qui attend que j’aie résolu un dernier problème de mise en oeuvre (j’espère la publier début juillet). Je serais ravi d’y intégrer votre système (si vous pouvez me transmettre par mail ou le publier ici).

    • Le 26 mai 2004 à 13:06, par kate En réponse à : > le glossaire en javascript ?

      Je m’empresse de tester et je vous donne des nouvelles.

       :-)

    • Le 28 juin 2004 à 21:40, par Markus Bocker En réponse à : > le glossaire en javascript ?

      Pour le javascript, j’en ai trouvé un qui pourra aussi faire l’affaire :

      Voici l’adresse

      P.S. : J’ai l’intention d’utiliser le glossaire pour apprendre des langues : le glossaire serait alors mon dictionnaire intégré.

    • Le 10 août 2004 à 08:16, par jejedeco En réponse à : > le glossaire en javascript ?

      Bonjour

      Je vois que al question du Java Script avance à grand pas ... Je vais poser une question naïve, mais plutot qu’un java non lu par 5 % de mes visiteurs, ne peut on pas utiliser un truc du genre :

      HTML

      c’est une simple balise HTML : acronym

      C’est ce qu’il font sur openweb et je trouve ca particulièrement simple et très bien à mettre en place
      Isn’t it ?

      Etant nul en php, je ne suis pas parvenu à l’intégrer dans le filtre...

    • Le 12 septembre 2005 à 03:49, par alexscott En réponse à : > le glossaire en javascript ?

      merci de me citer :)
      si vous avez besoin d’aide ou de quoi que ce soit (en rapport avec la programmation) hesiter pas a m’envoyer un mail :)

    • Le 12 septembre 2005 à 03:52, par alexscott En réponse à : > le glossaire en javascript ?

      pour remplacer le javascript du html+css2 c’est tres interessant, tres propre et tres joli mais ce n’est pas gere par IE6 (peut-etre le 7 le gerrera)

    Répondre à ce message

  • Le 31 mai 2005 à 12:26, par bidouille En réponse à : > Définition au survol de la souris, en css

    En modifiant légèrement la fonction, cette css trouvée sur alsacréations permet d’afficher la définition au survol de la souris. Une solution élégante et légère, surtout pour de longues définitions, alternative au javascript.

    La css, à placer et assaisonner selon les goûts :

    a.gloss {
    border-bottom: 1px solid #ddd;
    }
    a.gloss:hover {
    cursor: help;
    text-decoration: none;
    color:#000;
    }
    a.gloss span {
    display: none;
    }
    a.gloss:hover span {
    display: inline;
    position: absolute;
    right: 2%;
    width: 250px;
    color: black;
    background-color: #ddd;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-style: normal;
    text-align: left;
    font-size: 75%;
    border-left: #000 2px solid;
    padding: 5px;
    }

    La modification de la fonction :

    function lier_au_glossaire($texte)
    {
            # Config
            # L'identifiant (id_rubrique) de la rubrique glossaire
            $id_rubrique = 2;
            # Limiter l'effet du filtre à la première occurence
            $eviter_doublons = 1; // 0 : afficher toutes les occurences
            # On checke si l'entrée est déjà présente dans la table
            # Mettre l'identifiant de la rubrique contenant le glos
            # Afficher la définition dans un calque au survol
            $r = spip_query("SELECT id_breve, titre, texte FROM spip_breves WHERE statut='publie' AND id_rubrique='$id_rubrique'");
            while($o = spip_fetch_array($r))
            {
                    if($eviter_doublons == 1)
                    {
                            $texte = first_replace("$o[titre]","<a href=\"breve.php3?id_breve=".$o[id_breve]."\"  class=\"gloss\">$o[titre]<span>$o[texte]</span></a>",$texte);
                    }
                    else
                    {
                            $texte = str_replace("$o[titre]","<a href=\"breve.php3?id_breve=".$o[id_breve]."\" class=\"gloss\">$o[titre]<span>$o[texte]</span></a>",$texte);
                    }
            }
            return $texte;
    }

    Problèmes de difficulté croissante :
    -  Le texte même des définitions étant chargé dans la page, mieux vaut éviter de remplacer toutes les occurences ;
    -  Internet Explorer pour mac semble ne pas savoir interpréter cette propriété des css. Ce n’est pas rédhibitoire parce qu’il y a toujours le lien vers la définition, mais on perd l’effet recherché ;
    -  Ce qui pourrait être rédhibitoire, c’est que la fonction traite le texte de la définition comme le reste et ça déraille (cf message 11)... Une solution brute, non satisfaisante, est d’éviter de citer un autre terme du glossaire dans une définition ;
    -  Le moteur de recherche s’emmêle les span et supprime carrément les occurences du texte plutôt que de les surligner.
    Les deux premiers problèmes ne sont pas trop méchants mais j’appelle à l’aide pour les deux derniers...

    • Le 6 juin 2005 à 16:07, par bidouille En réponse à : > Définition au survol de la souris, en css

      Pour le problème de boucle, solution rudimentaire et moche : remplacer les minuscules par des majuscules dans le texte de la définition (à condition de n’avoir aucune occurence du glossaire en majuscule)

      Pour le problème du surlignage du mot recherché, attaquer SPIP dans ecrire/inc-surligne.php3 ligne 144 :
      remplacer :

      par, par exemple :

      Solutions proposées à défaut d’autre chose...

    Répondre à ce message

  • Le 24 mai 2005 à 14:33, par BL En réponse à : Mot dans les balises HTML

    Bonjour et merci pour cette contrib.

    Je l’ai intégrée dans mon site mais en plaçant mon glossaire dans un groupe de mots-clés. Le clic ouvre une popup contenant la définition.

    J’ai pourtant un problème :

    Existe-t-il une solution pour que la fonction ne prenne pas en compte les mots-clés intégrés dans les balises HTML, du type : a href=« mot-clé.pdf » => la fonction intègre un lien DANS la balise !

    Merci encore.

    Répondre à ce message

  • Le 24 janvier 2005 à 12:06, par Vincent En réponse à : > Problème d’intégration de l’infobulle

    Bonjour à tous,
    j’utilise cette contribution depuis plusieurs mois, en attendant la prochaine version qui devait intégrer l’infobulle.
    J’ai essayé de l’intégrer par moi-même, mais j’ai une erreur de boucle

    /*$texte = str_replace(« $o[titre] »,« onmouseover= »infobulle(’#99CC66’, ’#99CC66’, ’#FFFFFF’, ’2’,’« .$o[titre]. »’, ’#FFFFFF’, ’#000000’, ’2’,’« .$str. »’)\« onmouseout= »kill()\« > ».$o[titre].«  »,$texte) ;

    En effet, la commande while($o = spip_fetch_array($r)) fait que je boucle sur les str replace, QUAND une définition du Glossaire contient un autre mot du glossaire !!!

    Quelqu’un voit-il comment faire pour que la partie déjà traitée du texte ne soit pas « revisitée » par la fonction lier_au glossaire ?

    Merci,
    Vincent

    Répondre à ce message

  • Le 19 janvier 2005 à 10:25, par marabbeh En réponse à : Un glossaire interne

    Intéressante solution !

    J’ai fait un glossaire sur mon site, bien avant que cette contrib ne soit publiée. Au lieu de brèves, j’utilise des mots-clés, ce qui m’a paru naturel. De plus, ça a pas mal d’avantages dans l’espace privé : tous les mots-clés sont listés dans la même page, lors de l’édition d’un mot-clé on a simultanément le texte définitif et le texte à éditer. L’inconvénient est que dans l’expace public, les pages de glossaire (A, B, C...Z) sont longues à charger, même mises en cache. Ca doit venir du fait qu’il faut récupérer les mots-clés un à un dans le cache.

    Répondre à ce message

  • Le 11 janvier 2005 à 15:51, par Goushi En réponse à : > Un glossaire interne

    Bonjour,
    Merci pour la contrib. La mise en place est facile mais pour ne pas géner la lecture je cherchais à ouvrir une nouvelle fenetre avec des données particulières. Seul problème, passer l’info dans les lignes de commande.
    Voila le code que j’ai mis dans mes_fonction.php3 qui a été un peu trandormé pour pouvoir passer la fonction javascript que j’utilise dans la fonction fournie dans l’article :

    Attention : Le bloc ........ doit être mis en tout début de page pour qu’il soit pris en compte
    Vous pourrez y mettre d’autre fonctions javascript appelées dans de futur fonction php.

    <HTML><head>
    <script language="javascript">
         var win = null;
         function fenetre(page, nom, L, H, defilement)
         {
           posX = (screen.width) ? (screen.width - L)/ 2 : 0;
           posY = (screen.height) ? (screen.height - H)/ 2 : 0;
           contenu = 'height=' + H + ', width = ' + L
                    + ', top ='+ posY +', left =' + posX
                    + ',  scrollbars, resizable';
           win = window.open(page, nom, contenu);
         }
       </script>
            </HEAD></HTML>
           
    <?php function first_replace($c,$r,$t)
    {
            if(strstr($t,$c))
            {
                    $d = str_replace(strstr($t,$c),"",$t);
                    $f = strstr($t,$c);
                    $f = substr($f,strlen($c));
                    return $d . $r . $f;
            }
            else
                    return $t;
    }

    # Crée des liens vers le glossaire
    function lier_au_glossaire($texte)
    {
            # Config
            # L'identifiant (id_rubrique) de la rubrique glossaire
            $id_rubrique = 58;
            # Limiter l'effet du filtre à la première occurence
            $eviter_doublons = 1; // 0 : afficher toutes les occurences

            # On checke si l'entrée est déjà présente dans la table
            # Mettre l'identifiant de la rubrique contenant le glos
            $r = spip_query("SELECT id_breve,titre FROM spip_breves WHERE statut='publie' AND id_rubrique='$id_rubrique'");

            while($o = spip_fetch_array($r))
            {
                    if($eviter_doublons == 1)
                    {
                            $texte = first_replace("$o[titre]","<a href=\"dictionnaire.php3?id_breve=".$o[id_breve]."\"  onclick=\"fenetre(this.href,'name','400','400','yes');
          return false\"\"glossaire\" class=\"glossaire\" target=\"_blank\">$o[titre]</a>",$texte);
                    }
                    else
                    {
                            $texte = str_replace("$o[titre]","<a href=\"dictionnaire.php3?id_breve=".$o[id_breve]."\"  onclick=\"fenetre(this.href,'name','400','400','yes');
          return false\"\"glossaire\" class=\"glossaire\" target=\"_blank\">$o[titre]</a>",$texte);
                    }
            }
            return $texte;
    }

    En espérant que cela serve à quelqu’un.

    Répondre à ce message

  • Le 26 août 2004 à 20:20, par ? En réponse à : > Un glossaire interne : casse et minuscules

    Bonjour et merci pour cette contribution.
    Cependant, j’ai eu le « malheur » de rentrer le glossaire (350 noms) en automatique... AVEC UNE MAJUSCULE.
    Conclusion : très peu de liens fonctionne.
    En lisant les commentaires, je vois Ô bonheur qu’une nouvelle version serait disponible incessament sous peu...
    Savez-vous ce qu’il en ait ?
    Merci

    Répondre à ce message

  • Le 2 juin 2004 à 14:00, par jejedeco En réponse à : > Un glossaire interne

    Je suis impressionner par la facilité de mise en oeuvre et la puissance de l’outil. Je l’ai installé sur un guide en ligne que nous rédigeons et dont je commence les squellettes... Je vias m’en servir pour noté chaque sigles que nous utilisons...

    Encore bravo

    Par contre, on parle de pousser un peu plus loin le probléme de la casse. Est ce toujours d’actualité ?

    • Le 2 juin 2004 à 18:41, par François Schreuer En réponse à : > Un glossaire interne

      Oui, oui, c’est toujours d’actualité : promis, la version 2 sera disponible en juillet.

    • Le 30 juillet 2004 à 17:42, par jejedeco En réponse à : > Un glossaire interne

      françois, j’utilise le gossaire depuis 2 mois et je ne vois pas pourquoi tu ne fais pas mention de la possibilité de renvoyer vers un lien (genre pour en savoir plus ...) avec l’utilisation des #URL_SITE de Breves ?

      Sinon j’ai vu que tu preparais la version 2, je suis impatient, notament de voir sur tu as pu intégrer le javascipt !

      Bon courage
      jerome

    Répondre à ce message

  • Le 11 mars 2004 à 19:29, par ? En réponse à : Majuscule minuscule

    Bonjour

    Aviez-vous trouver une solution pour éviter le problème des majuscules et minuscules ?

    Si oui, pourriez vous me la communiquer

    En vous remercient
    GB

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Métas +

    3 décembre – 12 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Acces Restreint 3.0

    11 décembre 2008 – 785 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

  • Compositions 2 et 3

    25 mars 2011 – 176 commentaires

    Ce plugin vous permet de définir plusieurs variantes de squelettes (nommées compositions) pour un même type d’objet SPIP. Dans l’espace privé, il est alors possible de choisir, dans un menu déroulant, la composition qu’on veut attribuer à chaque (...)

  • Configurer Sparkpost

    25 avril – 18 commentaires

    N’hésitez pas à relire le préambule de cette rubrique avant de créer un compte sur une plateforme tierce . Présentation Sparkpost est une société d’envoi de mailing https://www.sparkpost.com/ Sur les petits volumes ( <100.000 emails / mois), (...)

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 21 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Zone d’entête Nom du site Slogan si plugin bandeau présent (...)

Ça spipe par là