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

Footnotes

[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

27 discussions

  • 2

    Bonjour,

    1/ Sur une nouvelle installation d’un spip 3.2.7, je constate que soit depuis l’espace privé (lien “voir en ligne” sur une définition) ou meme depuis l’espace public dans un article, quand je clique sur un lien de définitions, alors j’ai une erreur 404.

    Afin de contourner le PB j’ai dû copier / coller les différents modèles HTML du plugins dans mon répertoire SQUELETTES, c’est étonnant, non ?

    2/ Dans un article si je survole le “?” d’un mot avec définition, un court résumé apparaît ce qui est très bien. Cependant si dans ma définition j’ai des caractères SPIP de type puce par exemple, c’est a dire un TIRET + ETOILE, alors dans l’info bulle de mon lien j’ai aussi l’affichage des raccourcis SPIP. Est ce que cela vous le fait aussi ?

    Comment est ce que cela peut - i l se corriger ou contourner ?

    Merci a tous et bonne journée.

    • 1) le plugin génère pas de page publique, mais fournit un “contenu” minimal (mais ça ne marche qu’avec une vieille version de Z en plus ça), donc bah oui, c’est à chacun de construire ses pages suivant son squelette (faudrait au moins fournit “content” plutôt, pour être compat avec tous les nouveaux Z càd beaucoup de sites)

      2) Effectivement “propre” n’est pas utilisé là, je ne saurais pas du tout te dire pourquoi de mémoire. C’est typo() seulement (que pour les titres normalement) alors que c’est bien un “texte” qui permet tout comme les autres textes longs. Il faudrait sûrement changer ça, et c’est ici :
      https://git.spip.net/spip-contrib-extensions/dictionnaires/src/branch/master/inc/dictionnaires.php#L194

    • Hello Rasta,
      Merci de ton retour,

    Reply to this message

  • 1
    spipfactory

    Bonjour,

    je rencontre un soucis, lorsque je donne une définition et que le mot est composé celui-ci prend en compte la définition

    exemple : SPIP (je donne la défnition est un lien
    mais si dans mon texte j’ai le mot SPIP-Cli celui-ci m’indique la définition sur SPIP alors que le mot est SPIP-CLi.

    est ce un comportement normal ?
    comment ne pas avoir la définition SPIP sur le mot compose SPIP-Cli

    merci pour votre éclairage

    Reply to this message

  • 1

    Bonjour à tous,
    Pour les chaînes de caractères identifiées par le plugin, est-il possible de souligner (typiquement, en pointillé) plutôt que d’ajouter un point d’interrogation, merci.

    Reply to this message

  • 1

    Pour info, le code source semble indiquer que le lien inséré contient une erreur : il faut ajouter un espace entre <a href =“spip.php?definition1” et title=“le titre”

    Reply to this message

  • 1

    Bonjour,

    Autre petite erreur : lorsqu’un MEGA TAG Title ou Description contient un mot d’un dictionnaire, ce mot est affecté du point d’interrogation.

    • La recherche des mots s’applique sur tout texte qui passe dans “propre” (la transformation de la syntaxe spip). Dans ce pipeline il n’y a absolument aucune info de qui que quoi comme texte on est en train de chercher, ça peut être une balise (souvent) ou tout autre chose, et si c’est une balise on n’en sait rien laquelle. Il n’y a donc pas de discrimination possible pour parfois appliquer parfois pas.

      Si on ne veut pas l’appliquer partout, il faut soit désactiver le fait de l’appliquer partout, il y a une constante pour ça, et l’appliquer seulement volontairement sur les champs qu’on veut avec le filtre explicite, tout ça est dans la doc plus haut ; soit sur les balises où on ne le veut faire, il faut mettre * et n’appliquer que ce qu’on veut ou virer la def après coup.

    Reply to this message

  • 1

    Bonjour,

    Dans le cadre d’une galaxie de site, j’aimerais pouvoir :

    • soit avoir un site central qui contiendrait toutes les définitions, utilisables ensuite sur n’importe quel des autres sites
    • soit avoir les définitions sur chacun des des sites, mais utilisées sur tous les sites à fois

    Une idée de comment faire ?

    PS : sachant que j’ai un plan B : faire un plugin qui ait en dur les définitions dans son script d’upgrade et qui les crée dans tout les sites

    • Il y a un pipeline “lister_definitions” exprès pour ce genre de cas : pouvoir ajouter des définitions venant de n’importe quoi d’autres. Il te suffit de t’insérer dedans et remplir avec des définitions venant d’une autre base. Après ya pas de système de “webservice”, sites “parent/enfants”, etc tout prêt. Mais on peut bien remplir 500 définitions venant d’ailleurs si on le veut. Et tout ça est mis en cache dans le site hein, ça n’appelle pas le distant à chaque fois. Du moment que ça a déjà été généré, et qu’on n’a pas purgé, ça prend le fichier de cache.

    Reply to this message

  • 3

    A l’install du plugin, les tables ne sont pas créées :

    Erreur SQL HY000 / 1
    no such table: ddys_dictionnaires 

    Quelqu’un a t-il le même problème ?

    Cdlt

    Freed

    • tu serais pas chez ovh dès fois ? je sais que plusieurs personnes ont des souci d’install de plugin _en general_ chez eux.

    • Un passage par la page de maintenance afin de lancer une réparation des tables de la base devrait corriger le pb.

    • Oui, chez OVH, j’y ai passé l’après midi, passé les logs en mode debug, farfouillé partout, installé réinstallé le plugin et d’autres pour lesquels les tables ne se crée pas non plus, réparé la base plusieurs fois et....
      ... rien !!!
      Puis je vois vos réponses, refait une réparation par acquis de conscience ! Ça fonctionne !!!
      Vraiment Bizarre, comme si il y avait du cache sur les serveurs OVH (surtout que je suis en SQLite).

      Merci pour vos réponses, enquête à suivre.

      Cdlt

      Freed

    Reply to this message

  • 2

    Bonjour,

    est-il possible de n’appliquer un dictionnaire qu’à une seule rubrique ?

    Merci.

    • Non par défaut puisque c’est appliqué dès qu’il y a la fonction “propre”, comme expliqué plus haut, fonction qui s’applique à n’importe quoi, pas forcément des objets SPIP et qui ne connait pas l’environnement.

      Par contre, là aussi plus haut, c’est expliqué que tu peux le décider toi-même dans tes squelettes :

      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().

    • Merci.

      J’avais bien intégré l’utilisation de “propre” mais je n’ai pas compris l’utilisation de la constante ’DICTIONNAIRES_DETECTION_MANUELLE’ Je vais donc essayer ça.

      Encore merci pour cette réponse rapide.

    Reply to this message

  • 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 ;-)

    Reply to this 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.

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

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