Dictionnaires

Présentation

Le plugin Dictionnaires sert à définir des choses, regroupées dans des dictionnaires. Une définition peut avoir plusieurs statuts comme les articles, tandis qu’un dictionnaire peut juste être actif ou inactif. Lorsqu’un dictionnaire est activé, cela signifie que ses définitions seront cherchés dans tous les textes du site.

Par défaut, deux types de définitions sont disponibles : normale ou abréviation (sigle, acronyme ou autre).

Chaque définition peut lister des termes supplémentaires qui seront reconnus aussi (le pluriel par exemple). Pour les abréviations, le système ajoute automatiquement une version avec p.o.i.n.t.s, il n’est dont pas nécessaire de les ajouter vous-mêmes.

Un plugin proche existe : le plugin Glossaire mais SPIP a tendance à mouliner lorsque la liste des définitions (un groupe de mots-clés) est trop importante. Moins proche et entièrement manuel, le raccourci Wikipedia de SPIP : [?Wikipedia].

L’avantage du plugin Dictionnaires est qu’il demande moins de ressources et qu’il présente deux nouveaux objets qui suivent l’analogie Rubriques/Articles et peuvent chacun recevoir des logos et des documents.

Fonctionnement

Lorsqu’un dictionnaire est actif, toutes ses définitions publiées sont recherchées dans les textes qui passent par la fonction propre(). Les termes trouvés sont alors remplacés par une fonction personnalisable (cette fonction est aussi personnalisable suivant le type de définition).

La fonction par défaut ajoute un lien « Définition » en note <sup> après le mot, lien qui pointe vers la page de la définition (pour info, le plugin fournit des squelettes compatibles avec Zpip pour afficher une définition et un dictionnaire).

Ce comportement n’est fait que pour les premières occurrences de chaque texte. Ceci est personnalisable depuis la page de configuration du plugin.

Une option « sensible à la casse » est disponible pour chaque définition. Ceci indique au détecteur de prendre en compte uniquement le terme exact (« ce » ne sera pas reconnu pour « CE »).

Pour chaque dictionnaire, vous pouvez définir le type par défaut des nouvelles définitions qui y seront crées.

Lors de l’installation, le plugin propose une fonction d’importation des acronymes définis à l’aide du plugin Forms&Tables. Les éléments sont importés en tant qu’abréviations (modifiable ensuite).

Installation du plugin

L’installation se fait par la méthode habituelle, Dictionnaires ne demande que le plugin Saisies comme plugin complémentaire pour fonctionner.

Configuration du plugin

Une fois l’installation faite, le menu « Configuration » de SPIP affiche un item « Dictionnaires ».

Par ce lien, vous arrivez à la page « Configurer les dictionnaires » qui propose deux cases déjà cochées :

  • Remplacer uniquement la première occurrence d’une définition
  • Remplacer uniquement la première occurrence d’une abréviation

Cela vous permet d’afficher les définitions sur tous les termes d’un texte ou seulement la premier fois qu’ils sont rencontrés.

La constante define('DICTIONNAIRES_DETECTION_MANUELLE', true); permet de spécifier que l’auteur des squelettes se charge d’appliquer le filtre |definitions sur les balises souhaitées, et non sur tout les textes qui passent par la fonction propre().

Saisie des dictionnaires

Il faut d’abord créer un ou des dictionnaires et, pour chacun, créer des définitions. Le menu « Édition » de SPIP contient aussi une entrée « Dictionnaires ». Il vous suffit de cliquer sur « Ajouter un nouveau dictionnaire ».

Liste des champs pour l’objet Dictionnaire :

  • Titre (champ obligatoire)
  • Descriptif (champ)
  • Abréviation par défaut (case à cocher)

Cet objet a deux statuts possibles : Inactif (par défaut)/Actif. Un dictionnaire actif aura ses termes détectés dans les contenus du site.

Accessoirement, le plugin permet d’utiliser un raccourci supplémentaire : [mon texte->dictionnaireXXX].

Saisie des définitions

Une fois un dictionnaire créé, sa page de "vue" propose d’ajouter des définitions.

Cliquer sur « Ajouter une nouvelle définition » donne une liste de champs pour l’objet Définition :

  • Titre (champ obligatoire)
  • Dictionnaire (menu déroulant, obligatoire)
  • Texte (champ)
  • Termes (champ listant "Des termes supplémentaires qui permettront de détecter la définition, séparés par des virgules.") [1]
  • Abréviation (case à cocher, « Est-ce un sigle, un acronyme ou autre abréviation ? »)
  • Sensibilité à la casse (case à cocher : « La détection de ce terme sera sensible aux minuscules et majuscules. »)

Cet objet a trois statuts possibles : « proposé à l’évaluation » (par défaut)/« publié en ligne »/« à la poubelle ».

La date de création d’une définition ne peut être modifiée que sous le statut « publié en ligne ».

Accessoirement, le plugin permet — ici aussi — d’utiliser un raccourci supplémentaire : [mon texte->definitionXXX].

Utilisation dans vos squelettes

Comme cité plus haut, le plugin fournit des squelettes compatibles avec Zpip pour afficher une définition et un dictionnaire. Vous pouvez consulter ces squelettes dans le répertoire contenu du plugin.

Le plugin met aussi aussi à disposition deux modèles utilisables depuis vos squelettes ou le texte de vos pages :
-  <dictionnaires> affiche la liste des dictionnaires
-  <dictionnaire> affiche la liste des définitions d’un dictionnaire.

Les balises de l’objet « dictionnaire » sont :

  • #ID_DICTIONNAIRE
  • #URL_DICTIONNAIRE
  • #LOGO_DICTIONNAIRE
  • #TITRE
  • #DESCRIPTIF

Les balise de l’objet « definition » sont :

  • #ID_DEFINITION
  • #URL_DEFINITION
  • #LOGO_DEFINITION
  • #TITRE
  • #TEXTE
  • #TERMES
  • #INTRODUCTION

Notes

[1Par exemple, pour la définition « Dioïque », vous pouvez aussi lister les termes : dioïques, dioïcie ; pour la définition « Tomenteux », les termes, tomenteuse, tomenteuses…

Discussion

29 discussions

  • 4

    Re-Bonjour,

    Autre chose : j’aurais voulu éventuellement organiser 1 dictionnaire par langue.
    Comment peut-on ensuite, pour un même mot, n’afficher que la langue correspondante (les dictionnaires pouvant être nommé « fr », « en » pour faciliter) ?

    • Bé tu peux pas, ce n’est pas prévu. Ya bien un champ lang pour les définitions mais ya pas pour les dictionnaires, ni de système d’héritage par défaut (comme les rubriques de telle langue dont les articles ont la même langue par défaut à la création), ni encore moins de gestion de plusieurs définitions des mêmes termes, ça fait forcément conflit, ya pas de système qui choisirait la bonne définition suivant le contexte.

    • Bonjour RastaPopoulos,
      Merci pour cette réponse rapide. Aurais-tu une idée de comment procéder pour mettre en place ce dictionnaire sur un site multilingue ?
      Et, effectivement il y a un champ Lang pour les définitions, mais as-tu une idée de comment on pourrait s’en servir ?

    • Non là tout de suite je ne vois pas. Il faudrait une évolution du plugin déjà pour éditer ce champ (SPIP a un formulaire générique pour ça je crois), mais ensuite surtout il faudrait que lors du scannage des textes, on ait le contexte du moment (dont la langue) pour pouvoir alors sélectionner en priorité telle ou telle définition. Sauf que par défaut, quand on ne contrôle pas soi-même les appels, c’est appliqué automatique dans le pipeline « post_propre » pour tous les textes, et là on n’a absolument pas le contexte courant.

    • Bonjour RastaPopoulos,
      C’est ballot. Et je ne suis pas assez technos pour mettre les mains dans le cambouis. Dommage, parce que cette idée de dictionnaires est absolument brillante ! Merci quand même pour ta réponse, en espérant que quelqu’un de techniquement talentueux s’y mette un de ces 4 ;-)

    Répondre à ce message

  • 1

    Bonjour,
    Merci pour ce plugin fantastique !
    Petit bug en utilisant le plugin Multilang : les titres sont correctement traduits mais les URLs ne sont pas traduites, et on lit donc les balises au lieu du lien.

    • Tu veux dire que Multilang permet de traduire le champ « url_externe » ? Ça ne devrait pas normalement, généralement ça s’applique que sur les textes, titre, descriptif, etc.

      Soit il ne faut pas que multilang s’applique sur ce champ (ce qui est le cas dans les autres contenus il me semble, qu’il ne s’applique pas sur les champs d’URL, sur les articles ou autre). Soit il faut que la balise #URL_EXTERNE ait le filtre « typo » appliqué par défaut comme pour les titres afin que ça gère les multi.

    Répondre à ce message

  • 3

    Bonjour,

    On ne peut pas mettre à la poubelle une définition contrairement à ce qu’indique le libellé.

    Dans le fichier « dictionnaires_tables.php », à la ligne 159, le statut_textes_instituer pour « à la poubelle » est « refuse » au lieu de « poubelle ».

    Est-ce volontaire de la part des auteurs ?

    Merci !

    • Je constate la même chose.
      Comme ça, je dirais que c’est une erreur, les définitions mise à la poubelle n’étant alors jamais traitées par le cron « optimiser ».

      Je peux m’occuper de corriger. Go ?

    • Pour moi c’est Go !

      Merci Peetdu !

    • La version 1.2.0 corrige la chaine de langue pour le statut « Refusé » et introduit un nouveau statut « Poubelle ».

      Note pour ceux qui pensaient avoir avaient mis à la poubelle leur définitions :
      Ces définitions ont maintenant clairement le statut « Refusé ». Si vous voulez les supprimer, il vous faut passer leur statut à « à la poubelle »

      Les définitions misent à la poubelle seront supprimées de la base de données au bout d’environ 24h (note : c’est vrai pour n’importe quel objet mis à la poubelle, sauf Auteurs je crois).

    Répondre à ce message

  • Bonjour,

    Je crois que j’ai trouvé un bug potentiel dans instituer_definition
    appelé juste après insert_definition(), le id_dictionnaire de l’id_definition qui vient d’être créé vaut 0, et on va vouloir mettre à jour avec un vrai id de dico, mais l’autorisation porte sur l’id qui vaut 0 et non sur l’id final
    cf le commit que je viens de faire avec 2h perdue à identifier que je devais passer 0 et pas l’id_dictionnaire que j’avais
    spip-zone : https://zone.spip.net/trac/spip-zone/changeset/111124 (1 files) : Migrer les sigles du précédent plugin sans avoir besoin de la présence de F&T. + des autoriser_exception pour que ça marche avec SPIP-cli.

    Est-ce que je modifie instituer_definition pour utiliser le id_dictionnaire que l’on veut utiliser si le id_dictionnaire enregistré est 0 ?

    Répondre à ce message

  • 3

    Bonjour,
    Dans un site en construction sous spip 3.2 avec le plugin-squelette soyez créateur, j’ai voulu faire un dictionnaire. J’ai pour l’instant entré 4 ou 5 définitions. Elles apparaissent bien dans le pied de la page d’accueil. Mais j’ai fait un article test dans lequel se retrouvent ces mots (et d’autres que je définirai quand le problème sera résolu !). Seulement 2 de ces mots sont cliquables vers leur définition. Je ne sais pas ce que j’ai fait pour ceux-là, et pas pour les autres, (ou inversement !)
    Par ailleurs, comment mettre automatiquement ces mots en couleur par exemple, ou en caractères gras, parce que je trouve que le «  ? » n’est pas très visible.
    Merci de votre aide.
    http://www.loeilepleumien.fr ; http://www.loeilepleumien.fr/?Essai-pour-une-definition

    • Bé je ne sais ce que tu as dans ta config, donc je ne sais pas pourquoi certains sont détectés et d’autres pas… Après ya une différence entre abréviation pas définition classique, pas forcément le même rendu. La génération de comment sont transformés les mots détectés est dans une fonction PHP surchargeable par type de définition (à décrire dans cette doc ici, c’est un manque encore, désolé).

    • Merci pour cette réponse. S’il faut que j’aille regarder dans la partie programmation, alors là, c’est foutu... :-( Dommage ! Je trouvais l’idée du dictionnaire bien sympa, et elle correspondait bien à ce dont j’avais besoin) ! Je vais rechercher encore. Il y a peut-être quelque chose que je n’ai pas fait comme il fallait...
      Cordialement

    • Il se pourrait que https://zone.spip.net/trac/spip-zone/changeset/110957 réponde à la question des éléments non détectés...

    Répondre à ce message

  • 2

    Bonjour,

    SPIP 3.21, PHP 7.0, Windows (WAMP).
    Seuls plugins installés : Dictonaire + Saisie.

    Constat : le dictionnaire ne trouve que les mots pour lesquels on a coché « Sensible à la casse ».

    Répondre à ce message

  • Bonjour,

    Bravo et merci pour ce plugin que j’étudie pour une très certaine intégration.

    Je voulais modifier le code HTML généré par le filtre ... et je découvre donc, avec joie, les fonctions et la possibilité de surcharge commentée :

    /*
     * Fonction de remplacement par défaut pour les abbréviations trouvées dans les textes
     * Ceci est un EXEMPLE montrant qu'on peut mettre un truc différent pour un type de définition précis
     * Mais ce code est une MAUVAISE PRATIQUE en accessibilité
     * (car seuls les gens avec des yeux valides et un pointeur de souris ont accès à l'information)
     */
    function dictionnaires_remplacer_abbr_dist($mot, $definition){
    	return '<abbr title="'.couper(trim(attribut_html(supprimer_tags(typo($definition['texte'])))),80).'">'.$mot.'</abbr>';
    }

    C’est le commentaire qui me gêne, il me semble, au contraire, que l’emploi de la balise <abbr> est plus bénéfique en terme d’accessibilité.

    Voir Guide AccessiWeb

    Répondre à ce message

  • 1

    Bonjour
    J’ai un bug d’affichage depuis le maj en spip 312
    La réactivation de dictionnaires 114 affiche en boucle le message d’erreur suivant :
    Warning : preg_replace_callback() : Compilation failed : invalid UTF-8 string at offset 23 in /www/docs/plugins/dictionnaires/dictionnaires_fonctions.php on line 50

    J’ai de plus tout le site qui est passé en caractère iso latin avec des losanges sur tous les caractères accentués.
    Je ne sais pas si cela a un rapport ?

    Merci pour votre retour

    Répondre à ce message

  • Bonjour,

    Plugin très utile, bravo !
    Je suis en spip 3.1 et je souhaiterai faire apparaître en bas de l’article (façon notes) le récaptitulatif des définitions utilisées plus haut dans ce même article.
    Je sèche sur la boucle à utiliser ?
    Merci pour votre aide

    Répondre à ce message

  • 3
    spipfactory

    Dans cette page http://nature-en-tarentaise.org/spip.php?article109&lang=fr
    Sauter le premier paragraphe et aller jusqu’à l’énumération au deuxième paragraphe. Dans le premier terme de l’énumération il y a le mot « panicule », dans le deuxième terme il y a les mots « épillets », « mutique », on voit un petit point d’interrogation qui indique qu’il y a une définition.
    1- Cette présentation avec un point d’interrogation est pas top. Souligné ou des couleurs, ce serait compréhensible...(je suis sur que c’est possible, mais qu’il me manque un truc)
    2- Si je passe la souris dessus j’ai le début de la définition qui apparaît dans un cadre, peut être on peut dire qu’on veut la définition entière...
    3- Si je clique sur le point d’interrogation j’ai affichage de la page d’erreur 404 car il n’y a pas le squelette des définitions...

    J’espère que c’est compréhensible !
    Merci et bonne journée à tous.

    • Bonjour,
      Je vois que ce message n’a pas eu de réponse. Pourtant ce qui est décrit correspond bien à ce qui se passe sur le site en question. Et je n’ai pas trouvé de solution.
      Si vous avez une idée à suggérer pour trouver une solution.
      Merci

      Philippe Pellicier

    • Bah vous avez 404 parce que vous n’avez pas de squelettes dédiés à cet objet (« definition »), ça doit le dire dans le message d’ailleurs normalement. Le plugin fournit des squelettes dans « contenu » mais il faudrait le changer en « content » car c’est vieux comme le monde « contenu », maintenant tous les trucs qui utilisent z-core utilisent « content ». Mais si vous n’êtes pas en format Z ça peut toujours s’inclure dans un definition.html à vous à la racine.

      Pour ce qui est du lien, c’est fait exprès que ce ne soit pas sur le mot par défaut, mais bien un lien extérieur qui suit. Ça pourrait sûrement être plus long et plus accessible (le mot « définition » carrément ou bien « déf » avec un abbr dessus).

      Par contre dans tous les cas on peut personnaliser le rendu par défaut, et aussi le rendu par type de définition (abréviation etc).

      C’est la fonction « dictionnaires_remplacer_defaut_dist » qui est là :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/dictionnaires/trunk/inc/dictionnaires.php#L173
      et qui peut donc être surchargée en enlevant le « _dist » à la fin.

      Ou bien comme expliqué juste en-dessous, en ajoutant une fonction plus précise : « dictionnaires_remplacer_abbr_dist » par exemple, pour CE type de définition.

      (Oui cette partie de fonctions personnalisables n’est pas dans la doc : c’est mal.)

      Normalement vous devriez avoir tout pour personnaliser le rendu comme voulu.

    • claudeD

      oui, comme le dit RastaPopoulos, il manque un squelette definition.html mais aussi un squelette dictionnaire.html pour cet autre 404 :
      http://nature-en-tarentaise.org/spip.php?dictionnaire1

    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