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

  • 21

    Hello, and thanks for the plugin,
    I was trying to use this plugin but found that I cannot have a proper way to have template specific to a language, despite I created definition.html for the default language of the site which is RTL and definition.en.html for English. I also enabled the translation function for the definitions.
    How can I code this feature and is it possible for you to add it in the next release ?
    Thank you

    • Hello, since SPIP 4.X you have to install some plugin for that (before template by lang code was in the default distribution) : https://www.spip.net/en_article4363.html?var_lang=en

      Did you have it already ?

    • Good day,
      I have used the documentaion provided in https://www.spip.net/en_article4363.html?var_lang=en and created template variants :
      definition.html for rtl which is the primary language of the multilingual site.
      definition.en.html for ltr/en
      dictionnaire.html for rtl
      dictionnaire.en.html for ltr/en
      I do not have installed any extra plugin to have Variants of templates for definition and dictionnaire. But I have enabled the translation of the definitions.
      By plugin, if you mean something like Squelettes par Rubrique, I couldn’t find such for for definition and dictionnaire. Is there any ?

    • Hello,
      I just enabled translation feature for the definitions and created template variants as following :
      dictionnaire.html for rtl (the primary language of the multilingual site)
      dictionnaire.en.html
      definition.html
      definition.en.html
      By plugin, if you mean something like Squelettes par Rubrique, I couldn’t find such for the dictionnaire and definition.

    • The documentation we both linked, explicitely says that you *have to* install the plugin (the link is in the doc, you just have to follow), to be able to do variants by lang code.

    • Right. I have that plugin enabled for the sections long before. But that doesnæt help with the dictionary.
      The problem is that despite the language of the definition (English) and the existence of the template file definition.en.html, it still returns definition.html which is for the definitions in the default language of the site unless I manually add  ?lang=en at the end of the URLs.

    • Ooook so we put aside that source of problem if you have it. So I had to dig deep in the code to find an issue for all content that are not in sections : https://git.spip.net/spip/spip/issues/5783

    • ok, hopefully, we can get it fixed as soon as possible.
      The same issue seems to be with author template variants.

    • Seems #TEXTE and #INTRODUCTION produce the same output, and there is no field in the private area for #INTRODUCTION.

    • Is there any way to activate public forums for definitions ?

    • new feature : you ought to create a squelette and dedicated code for that

    • @Kamran : public comments are always specific to your public templates, so there is nothing to « activate », but just front integration. For that, the very simpliest way is to use the Comments plugin and include its generic inclusions for that. Like

      <INCLURE{fond=inclure/forum, objet=definition, id_objet=#ID_DEFINITION, ajax}>
      

      and then style as you want.

      Comments 3 pour SPIP 3

    • Perfect. I added a public forum by adding id_definition ? to the BOUCLE_comments in /squelettes/inclure/forum.html.
      I also used the plugin Champs Extras to have some fields for pronunciations and word classes.
      I wonder, what if id_definition can inherit the full features of the article while it is still an object, or have regular sections and articles for dictionaries and articles while they have their own URL sets ?

    • You don’t have to (and it’s always better to not) modify inclusions from plugin. Normally you can pass « objet=definition » and « id_objet=#ID_DEFINITION » to work properly, it’s generic for any object.

      Don’t really understand the need of the last question :p

    • The page doesn’t load completely if I use

      <INCLURE{fond=inclure/forum, objet=definition, id_objet=#ID_DEFINITION, ajax}>

      But the forum and the comments load by adding id_definition ? to the BOUCLE of /squelettes/inclure/forum.html

      <BOUCLE_comments(FORUMS?) {id_rubrique ?}{id_article ?}{id_definition ?}{id_breve ?}{id_syndic ?} {par date}>
      .....
      </BOUCLE_comments>

      and include the page :

      <INCLURE{fond=inclure/forum,id_definition} />

      By inheriting the full features of the article I mean having, for example, the author for definitions.
      Seems, still no fix for the template variants.

    • Sorry, Seems my last comment was filtered. Anyway :
      By inheriting all features of the article, I mean having all features such as author, that the articles have while it has its table in the database as an object.
      Forum doesn’t load by adding “objet=definition” and “id_objet=#ID_DEFINITION”. I could load the forum when I add id_definition ? to the BOUCLE of my template file /squelettes/inclure/forum.html.
      I have updated SPIP to the latest, but still, the issue with thetemplate variants is not fixed.

    • to explain better, here is an example page for definitions using plugin Dictionnaires.
      Here isalso an example article to compare article futures using for definitions. In this example, I can get the benefits of all article features, but while having all article features, it could be much better to have the definition as the object, incrementing definition, and not the article. In the case of Dictionnaires vs RUBRIQUES, Dictionnaires is much better but still can manage with RUBRIQUES.

      Another question :
      How the definitions can get the same search benefits as the SPIP articles ? The internal SPIP search works well with definitions, but I mean search engines.
      In my case, when posting a new article, search engines like Google index the article almost immediately. One reason is that the site’s backend file for articles can be submitted to search engines as a sitemap. Any possibility of having an XML/RSS backend file for definitions ?

    • Hello Kamran, end of the year festivities here, I will try to answer at the end of the week or next week :)

    • right, enjoy, and thanks again for the plugin !

    • Hello and happy new year,
      I installed two plugins, Auteurs partout and Statistiques des objets to have author and statistic for definitions. As you know adding more plugins has its consequences.
      Still, I wonder how to have RSS/XML for definitions like backend Syndication files.

    Répondre à ce message

  • 10

    Bonjour. Fantastique plugin ! Comment lister les titres des définitions se référant à un mot-clé, sur une page mot-clé, où on liste des articles, rubriques, sites, etc. d’un mot-clé ?

    • bonjour,

      tu peux construire une page dictionnaire.html qui apparait à l’adresse :
      mon site/ ?dictionnaire1

      <BOUCLE_principale(DICTIONNAIRES) {id_dictionnaire}>
       etc 

      il y a des briques dans les modèles du plugin

    • en fait, j’ai répondu à côté.

      Dans ta page de mot-clé tu peux utiliser les boucles DEFINITIONS, les champs #TITRE et les id_mot comme dans les autres boucles objets

      J’ai bien compris ?

    • Bonjour, j’ai mis en place ce code, mais sans succès :

    • Désolé mais pour l’instant je n’ai pas compris ce que tu cherches à faire, à obtenir, du coup difficile d’aider. Cela a l’air très propre à ton site, aux liaisons que tu fais dedans. Mais comme je n’ai pas le contexte, l’architecture des contenus, je ne comprends pas de quoi il s’agit.

    • Merci de votre patience et attention. J’ai cette page avec une liste d’articles, etc par mot-clé, comme tous les sites ont, e crois. Par ex. : http://sofia.hyperlogos.info/spip.php?mot1018

      Je voudrais qu’une liste de définitons soit aussi présenté sur cette même page. J’ai mis le code ci-dessus sans succès. Merci de faire une observation.

    • Bé la boucle ci dessus fonctionne si t’as effectivement des définitions *liées aux mots clés* mais ça j’en sais rien.

    • je vois des définitions liées aux articles liés à ce mot clé.

      Est-ce les définitions apparaissant dans ces articles que tu veux voir lister sur ta page mot ?

    • Non, je voudrais bien que la page mot-clé puisse montrer non seulemente les articles, etc, mais aussi les définitions que j’avais associé à ce mot-clé.

    • En effet, cela m’intéresse aussi : peut-on associer des mots-clés aux définitions ? Actuellement, cette fonction ne semble pas disponible.

    • Je ne comprends pas trop vos remarques :

      • d’une part on peut parfaitement ajouter des mots-clés aux définitions, ça marche pour tout objet SPIP bien déclaré, et donc à fortiori pour les définitions. Quand dans un groupe de mots on dit que c’est autorisé sur l’objet Définitions, ensuite dans une définition il y a parfaitement la boite pour ajouter/retirer des mots.
      • d’autre part quand on est sur la page d’un mot déjà existant qui est associé à des contenus, et bien ça affiche aussi parfaitement les définitions en plus de tout autre objet, je l’ai sous les yeux là

    Répondre à ce message

  • 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,

    Répondre à ce 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

    Répondre à ce 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.

    Répondre à ce 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 »

    Répondre à ce 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.

    Répondre à ce 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.

    Répondre à ce 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

    Répondre à ce 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.

    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