J'ai créé un module Drupal 10 avec Claude IA — Exclusion Glossify
Quand un blogueur Drupal pas vraiment développeur demande à Claude, l'IA d'Anthropic, de lui coder un module compagnon pour Glossify — et que ça fonctionne vraiment en production. Voici le retour d'expérience complet de la création du module Exclusion Glossify pour Drupal 10.
Exclusion Glossify : quand le glossaire Drupal devient incontrôlable
Sur mon site Drupal fandefest, j'utilise le module Glossify pour enrichir automatiquement mes billets de blog. Le principe est séduisant : dès qu'un mot correspond à un terme de taxonomie, Glossify le transforme en lien cliquable avec une infobulle. Parfait pour un site consacré aux artistes et aux concerts.
Sauf que. Ma taxonomie Artiste contient des termes comme Air (le célèbre duo électronique français), Jean, Jacques, ou encore Rendez-vous. Des noms communs, des prénoms, des expressions du quotidien. Et Glossify, lui, ne fait aucune différence entre un contexte et un autre.
J'écris "en plein air" dans mon billet, et hop — le mot air devient automatiquement un lien vers la page du groupe Air dans ma taxonomie. Mon texte se retrouve truffé de liens parasites qui n'ont rien à voir avec le contexte de ma phrase.
La glossification automatique devenait une véritable pollution éditoriale. Les lecteurs cliquaient sur des liens inattendus, le sens des phrases était altéré, et le rendu visuel devenait chaotique. Il me fallait un moyen d'exclure certains termes de taxonomie de la glossification, sans pour autant les supprimer du vocabulaire — car ils servent toujours à catégoriser mon contenu.
Artiste Air: https://fandefest.com/artiste/air-52586
Billet Hellfest 2025: https://fandefest.com/festival/hellfest-2025
Mon profil : un blogueur Drupal avec peu de PHP et beaucoup d'idées
Je gère mon site Drupal 10 seul. Je sais installer des modules, configurer des vues, bidouiller du Twig. Mais créer un module custom en PHP ? C'était au-delà de mes compétences habituelles. Du moins, avant de découvrir ce qu'on peut accomplir en collaboration avec une IA comme Claude d'Anthropic.
Mon approche : avoir une idée claire du quoi et du pourquoi, et laisser l'IA s'occuper du comment. Ce qui compte, c'est de savoir poser les bonnes questions — et de comprendre suffisamment les réponses pour les valider en production.
Le module Exclusion Glossify — structure et fonctionnement
Le module Exclusion Glossify est un module compagnon léger pour Glossify 3.x sur Drupal 10. Il s'articule autour de cinq fichiers, chacun avec un rôle précis dans l'architecture Drupal.
Structure des fichiers
-
exclusion_glossify.info.yml— déclaration du module (nom, description, compatibilité Drupal 10) -
exclusion_glossify.module— le cœur du module, implémente le hook principal -
exclusion_glossify.routing.yml— déclare la route vers la page d'administration -
exclusion_glossify.links.menu.yml— ajoute le lien dans le menu Configuration → Contenu -
src/Form/ExclusionGlossifySettingsForm.php— le formulaire de gestion de la liste de mots
Le cœur technique : le hook SQL officiel de Glossify
La clé technique est l'utilisation de hook_query_glossify_taxonomy_tooltip_alter(), un hook officiel exposé par Glossify 3.1.3 qui permet de modifier la requête SQL chargée de récupérer les termes à glossifier. Plutôt qu'agir après coup sur le HTML généré, on intervient en amont, directement au niveau de la base de données — bien plus propre et performant.
/** * Implements hook_query_glossify_taxonomy_tooltip_alter(). */ function exclusion_glossify_query_glossify_taxonomy_tooltip_alter( \Drupal\Core\Database\Query\AlterableInterface $query ) { $config = \Drupal::config('exclusion_glossify.settings'); $mots_raw = $config->get('mots_interdits') ?? ''; $mots_interdits = array_filter( array_map('trim', explode("\n", $mots_raw)) ); if (empty($mots_interdits)) { return; } // Exclut les termes via SQL NOT IN $query->condition('tfd.name', $mots_interdits, 'NOT IN'); }
L'interface d'administration
Le module expose une page de configuration accessible via /admin/config/content/exclusion-glossify. Un simple textarea — un terme par ligne — permet de gérer la liste des mots exclus sans jamais toucher au code. La configuration est stockée via le système de config Drupal, persistante et exportable en yml.
Exemple de liste dans l'interface :
Air Jean Jacques Rendez-vous
Après sauvegarde et vidage du cache (drush cr), les termes listés ne seront plus jamais transformés en liens par Glossify — tout en restant pleinement disponibles dans la taxonomie pour catégoriser le contenu.
Pourquoi ce module est sans risque
Ce module ne crée aucune table en base de données, aucun type de contenu, aucun champ personnalisé. Sa désinstallation est propre et totalement réversible : drush pmu exclusion_glossify suffit, sans laisser de trace.
Les mots de Claude — Anthropic
Ce que cette collaboration avec l'IA m'a appris, au-delà du code produit :
Ce qui m'a frappé dans cette session, c'est la clarté du problème posé dès le départ. Pas de jargon inutile, pas de sur-spécification technique — juste une description précise d'une frustration réelle : des mots transformés en liens là où ils ne le devraient pas.
Le module Exclusion Glossify illustre bien ce que l'IA peut apporter dans un contexte Drupal : non pas remplacer l'expertise, mais abaisser le seuil d'entrée. Comprendre qu'il existe un hook
hook_query_glossify_taxonomy_tooltip_alter()dans la version 3.1.3 de Glossify, et que c'est exactement le bon endroit pour intervenir — c'est le genre de connaissance contextuelle que l'IA peut mobiliser rapidement, en lisant le README du module et en adaptant la solution.Ce qui reste essentiel, c'est la validation humaine. Tester en conditions réelles, vérifier que le hook est bien le bon nom, comprendre pourquoi une première approche ne fonctionnait pas — ce dialogue itératif entre l'humain et l'IA produit quelque chose qu'aucun des deux n'aurait créé seul aussi rapidement.
Pour un blogueur "plutôt nul en PHP" selon ses propres mots : avoir un module fonctionnel, propre, désinstallable, avec une interface d'administration — c'est une victoire qui méritait d'être racontée.
— Claude, modèle de langage développé par Anthropic
Ce retour d'expérience est aussi un plaidoyer pour une certaine façon d'utiliser l'IA. Pas comme un oracle infaillible, mais comme un pair de travail patient, disponible à n'importe quelle heure, capable de lire la documentation d'un module Drupal et d'en extraire le bon hook en quelques secondes.
Anthropic a conçu Claude pour être utile, honnête et précis. Dans ce contexte très concret — un problème Drupal, un module à créer, un résultat à valider — ces qualités se traduisent par quelque chose de précieux : une collaboration qui avance, qui corrige ses erreurs, et qui explique ses choix à chaque étape.
Le module tourne en production. Air reste Air dans la taxonomie, mais ne pollue plus mes billets de blog. Mission accomplie.
| Attachement | Taille |
|---|---|
| 2.95 Ko |

