Carnet Wiki

Comprendre le fonctionnement d’un plugin

Version 7 — 1 week ago

Les plugins fournissent “clés en mains” des fonctionnalités complémentaires, souvent paramétrables, spécifiques à des usages particuliers, ou étendant les possibilités du core, prêtes à l’emploi et sans nécessiter de développement ou de codage de la part du Webmestre.

Neanmoins, c’est du SPIP (squelettes, formulaires et pipelines essentiellement), donc modifiable, si on sait par où regarder : voici quelques pistes pour découvrir (déjà dans la boussole, entre la zone, Programmer, Plugins et Contrib ici) les entrailles d’un plugin que vous utilisez déjà, mais que vous voudriez modifier [1] ..

Le premier principe est toujours vrai : RTFM (en bon français : «va lire cette foutue documentation» si elle existe !)

Pour la trouver, ce doit être un article, souvent à Rechercher sur Contrib, en général le lien <documentation> est défini dans le code source XML [2] du plugin, et référencé sur la page de présentation de http://plugins.spip.net/.

Mais si la page de documentation explique souvent l’usage courant, le fonctionnement interne (en particulier les tables et meta ajoutées -pour la sauvegarde-, ou les droits d’accès -pour les autorisations par statuts d’auteurs-..) sont rarement explicitées, même si la lecture du forum des commentaires apporte souvent des éléments intéressants...

Si vous voulez aller plus loin, il va falloir lire le source du plugin, objectif de cette page introductive !

Lire le source d’un plugin

Produit libre et ouvert, le source de SPIP est totalement lisible, en ligne et avec une interface Web simpliste, bienvenue sur la Zone.

Pour le plugin [3] qui nous intéresse, allons directement au lien correspondant à la racine : http://zone.spip.org/trac/spip-zone/browser/_plugins_/nom_du_plugin/.
Normalement vous devriez même immédiatement rajouter le qualificatif trunk pour rentrer dans le dossier contenant la version active, mais tous les plugins ne sont pas (encore) rangés selon cette norme...

Eléments principaux

Comme vous avez utilisé (et donc installé) ce plugin, vous connaissez déjà une bonne part du premier fichier à regarder, qui est paquet-xml (en SPIP 2, c’etait plugin.xml, avec une syntaxe légèrement différente) : vous y noterez le prefixe, puis vous étudierez :
-  les boutons (quand un plugin ajoute des fonctionnalités en espace privé)
-  la configuration (désormais un simple formulaire en HTML) avec les casier métas de destination
-  la déclaration d’objets en base de données,
avec la version de schema pilotant les mises-à-jour de données,
-  les fonctions d’administration pour les traitements d’installation,
-  les autorisations d’utilisation en fonction de l’auteur connecté,
-  les formulaires CVT éventuels pour comprendre les écrans,
-  les pipelines magiciens qui surchargent les écrans ou l’exécution,
-  les dépendances à des plugins utilisés ou nécessaires,
car certains traitements sont en fait décrits par un autre plugin, (typiquement Facteur, Cextras, ..)

Dossiers de plugins

Enfin, une petite subtilité expliquée : le dossier emplacement de votre plugin peut différer selon son mode d’installation :
-  par SPIP lui-même : les plugins intégrés dans SPIP (dit “verrouillés”) sont enregistrés dans ./plugins-dist/,
-  par FTP direct : usuellement dans ./plugins/prefix,
-  par SVP, en téléchargeant un zip : dans ./plugins/auto/prefix,
-  par SVP, et son interface de chargement depuis un dépot : dans ./plugins/auto/prefix/vx.y.z,
(ce qui est la bonne manière : SVP vous garde un backup de la version précédente).
SPIP peut utiliser et activer les plugins selon ces trois emplacements (mais il ne peut trouver et activer un fichier paquet.xml depuis un dossier situé en-dessous d’un autre fichier paquet.xml.