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
Discussions by date of activity
31 discussions
A l’install du plugin, les tables ne sont pas créées :
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
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 :
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
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
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
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).
Reply to this 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 ?
Reply to this message
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...
Reply to this message
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”.
Et sur Debian 8 en PHP 5.6 pareil.
Réparé par https://zone.spip.net/trac/spip-zone/changeset/110957
Reply to this 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 :
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
Reply to this message
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
Bah apparemment tu as surtout l’air d’avoir des problèmes d’encodage de ta base de données. :(
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 :
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.
Follow the comments:
|
