Clustraly
Plugins & API interne

Étendez le CMS aux moments clés grâce au système de hooks (actions & filtres)

Système de hooks (actions & filtres) une fonctionnalité du module Plugins & API interne de Clustraly. Deux mécanismes façon WordPress actions et filtres où vos plugins branchent des listeners pour réagir aux événements du CMS ou transformer une valeur.

Branchez vos plugins aux moments clés du CMS : réagissez à un événement ou transformez une valeur, sans jamais modifier le cœur. L'IA propose, vous décidez.

Point d'extension

Étendez le CMS sans jamais modifier son cœur

La classe Hooks est le socle d'extension de vos plugins. Vos modules ajoutent du comportement à des points précis, sur un registre unique qui gère à la fois les actions et les filtres.

Le cœur reste intact : vos plugins s'y branchent, ils ne le remplacent pas.

  • Un registre unique pour actions et filtres
  • Deux mécanismes façon WordPress
  • Le cœur intact, vos plugins s'y greffent
Actions & filtres

Réagissez à un événement ou transformez une valeur

Une action (addAction / doAction) s'exécute pour ses effets de bord : son retour est ignoré. Un filtre (addFilter / applyFilters) chaîne les listeners pour transformer la valeur passée en premier argument.

Vous choisissez le bon outil selon le besoin : déclencher un traitement, ou réécrire une donnée au vol.

  • addAction / doAction : effets de bord, retour ignoré
  • addFilter / applyFilters : la valeur est chaînée et transformée
  • La valeur à filtrer passe en premier argument
Ordre & composition

Maîtrisez l'ordre d'exécution de vos listeners

Les listeners s'exécutent par priorité croissante (10 par défaut) et ne reçoivent que leurs acceptedArgs premiers arguments (1 par défaut). Plusieurs plugins se composent ainsi proprement sur un même hook.

Vous réglez la priorité pour placer votre extension avant ou après une autre, en toute prévisibilité.

  • Priorité croissante, défaut 10
  • acceptedArgs limite les arguments reçus, défaut 1
  • Plusieurs plugins se composent sur un même hook
Isolation & garde-fous

Un listener qui échoue ne casse jamais la chaîne

Chaque listener s'exécute dans son propre try/catch : une exception est journalisée sans interrompre la chaîne. Pour un filtre, la valeur courante est conservée intacte et transmise au listener suivant.

La liste des listeners est figée en snapshot avant itération, pour une ré-entrance déterministe même quand un hook en déclenche un autre.

  • Chaque listener encadré par un try/catch
  • Exception journalisée, chaîne préservée
  • Filtre en échec : la valeur courante reste intacte
  • Snapshot des listeners avant itération
Hooks documentés

Branchez-vous sur les moments clés du CMS

Le cœur expose des hooks documentés tout au long du cycle de vie : démarrage, sauvegarde et publication de contenu, rendu, sortie de vue, en-têtes SEO, sitemap et génération assistée par l'IA.

Autant de points d'ancrage stables sur lesquels vos plugins viennent réagir ou transformer.

  • cms.boot, content.saved, content.published
  • content.render, view.output, seo.head
  • sitemap.urlset, ai.generating, et d'autres
Découvrir l'API interne des plugins
Pourquoi ça compte

L'IA propose, vous décidez

Vos plugins ajoutent du comportement aux moments clés, mais le cœur garde la main sur la requête. Chaque listener s'exécute isolé dans son try/catch, la liste est figée avant l'itération et une exception ne casse jamais la chaîne : vous étendez le CMS en confiance.

FAQ

Questions fréquentes

Quelle différence entre une action et un filtre ?
Une action (addAction / doAction) s'exécute pour ses effets de bord et son retour est ignoré. Un filtre (addFilter / applyFilters) chaîne les listeners pour transformer une valeur passée en premier argument, puis renvoie le résultat transformé.
Que se passe-t-il si un de mes listeners lève une exception ?
Il est encadré par un try/catch : l'exception est journalisée sans interrompre la chaîne. Pour un filtre, la valeur courante est conservée intacte et transmise au listener suivant, ce qui garantit un comportement prévisible.
Comment contrôler l'ordre d'exécution de mes listeners ?
Les listeners sont exécutés par priorité croissante (10 par défaut) et ne reçoivent que leurs acceptedArgs premiers arguments (1 par défaut). Vous ajustez ces deux valeurs à l'enregistrement pour placer et alimenter précisément votre extension.
Sur quels événements du CMS puis-je me brancher ?
Le cœur expose des hooks documentés comme cms.boot, content.saved, content.published, content.render, view.output, seo.head, sitemap.urlset ou ai.generating, entre autres, couvrant le cycle de vie du contenu et du rendu.
Prêt à commencer ?

Construisez vos plugins sur des fondations stables

Le système de hooks est le socle d'extension de Clustraly : deux mécanismes clairs, des listeners ordonnés et isolés, une chaîne qui ne se rompt pas et des points d'ancrage documentés dans tout le CMS. Vos plugins réagissent et transforment aux bons moments ; le cœur, lui, reste maître. Vous étendez, vous décidez.