Aller au contenu

Systeme de plugins

Le systeme de plugins d’ArtisanCMS permet d’etendre les fonctionnalites du CMS sans modifier son code source. Chaque plugin est un module autonome qui peut ajouter des routes, des modeles, des pages d’administration, des blocs de page builder et bien plus.

Le coeur du systeme repose sur le PluginManager, situe dans app/CMS/Plugins/. Il est responsable de :

  • La decouverte et le chargement des plugins installes
  • La gestion du cycle de vie (installation, activation, desactivation, desinstallation)
  • La resolution des dependances entre plugins
  • L’enregistrement des Service Providers de chaque plugin

Chaque plugin declare ses metadonnees dans un fichier artisan-plugin.json a sa racine :

{
"name": "Mon Plugin",
"slug": "mon-plugin",
"version": "1.0.0",
"description": "Description du plugin",
"author": {
"name": "Nom de l'auteur",
"url": "https://example.com"
},
"dependencies": [],
"settings": {
"option_1": {
"type": "string",
"default": "valeur par defaut",
"label": "Option 1"
}
}
}

Les parametres declares dans settings sont automatiquement herités par le systeme et accessibles via l’interface de configuration du plugin.

Un plugin suit une structure conventionnelle :

content/plugins/mon-plugin/
├── artisan-plugin.json # Manifeste du plugin
├── src/
│ └── MonPluginServiceProvider.php # Point d'entree Laravel
├── database/
│ └── migrations/ # Migrations de base de donnees
├── routes/
│ ├── web.php # Routes web du plugin
│ └── api.php # Routes API du plugin
├── resources/
│ └── js/
│ └── Pages/ # Pages React pour l'administration
└── config/
└── mon-plugin.php # Configuration Laravel du plugin

Le Service Provider est le point d’entree du plugin dans l’ecosysteme Laravel. Il enregistre les routes, les vues, les migrations, les commandes et les bindings du conteneur de services.

Un plugin passe par plusieurs etats au cours de son existence :

load → install → activate → deactivate → uninstall
EtapeDescription
LoadLe PluginManager decouvre le plugin dans le repertoire des plugins
InstallLes migrations sont executees et les fichiers de configuration sont publies
ActivateLe Service Provider est enregistre, les routes et hooks sont actifs
DeactivateLe plugin est desactive sans supprimer ses donnees
UninstallLes migrations sont annulees et les donnees du plugin sont supprimees

Lors de l’activation d’un plugin, le PluginManager detecte et execute automatiquement les migrations presentes dans le repertoire database/migrations/ du plugin. De meme, la desinstallation annule ces migrations dans l’ordre inverse.

Les plugins peuvent s’integrer au CMS via le systeme de hooks et filtres :

  • Hooks (actions) : permettent d’executer du code a des points specifiques (ex. apres la creation d’un article, avant le rendu d’une page)
  • Filtres : permettent de modifier des donnees en transit (ex. modifier le titre d’une page, ajouter des champs a un formulaire)

Ce mecanisme permet aux plugins de collaborer entre eux et avec le coeur du CMS sans couplage fort.

Le PluginObserver surveille les changements d’etat des plugins et invalide le cache associe. La liste des plugins actifs est mise en cache pour eviter de scanner le systeme de fichiers a chaque requete.

Le PluginController expose l’interface de gestion des plugins :

  • Liste des plugins installes avec leur statut
  • Installation de nouveaux plugins
  • Activation et desactivation
  • Desinstallation

Le PluginSettingsController gere les parametres individuels de chaque plugin. Les champs de configuration sont generes dynamiquement a partir du manifeste artisan-plugin.json.

ArtisanCMS est livre avec 7 plugins officiels :

PluginDescription
SEOSitemap, meta tags, Open Graph, analyse SEO
E-commerceBoutique complete avec paiements et gestion de stock
FormulairesConstructeur de formulaires visuel
Assistant IAGeneration de contenu avec OpenAI et Anthropic
SauvegardeSauvegardes automatisees et restauration
Espace membresAbonnements, profils et contenu restreint
Formulaire de contactFormulaire de contact preconfigure