Pourquoi réaliser un plugin ?

Adapter SPIP à ses propres besoins avant la 1.9

Les squelettes, les balises, les boucles, et les filtres

SPIP est personalisable de bien des manières. Les premiers besoins de personnalisation sont vite comblés par la gestion des squelettes, fichiers html agrémentés de code SPIP qu’on stocke via un système de répertoires.

On peut également réaliser ses propres squelettes en s’appuyant sur les élements standards tels que les balises et les boucles, éléments que l’on peut créer et personnaliser à souhait.

Au besoin, on peut transformer l’affichage d’une balise à l’aide de filtres, fonctions codées en php dans un fichiers nommé mes_fonctions.php.

Cependant, il se peut aussi que nos besoins dépassent le cadre classique d’un site sous SPIP, comme publier des articles sur Internet sur un mode collaboratif entre rédacteurs. Il peut alors devenir nécessaire de transformer légèrement ou en profondeur le comportement de SPIP, voir d’ajouter de nouveaux éléments éditoriaux, de les associer et de les gérer à travers une interface personnalisée ou plus ergonomique.

Modifier le cœur de SPIP

Pour obtenir ces personnalisations, il était nécessaire d’entreprendre une démarche complexe de réécriture des fichiers du noyau, c’est-à-dire modifier le code distribué de SPIP. Certes c’est parfaitement légitime [1], mais alors suivre les évolutions de SPIP devenait un travail pénible et lourd.

Adapter SPIP à ses propres besoins après la 1.9

Depuis la version 1.9, SPIP met en place tout un formalisme pour permettre une modification et une extension harmonieuse du code. La principale avancée se situe dans la possibilité de "greffer" (et de retirer la greffe quand on le souhaite sans avoir touché le code de notre SPIP tout neuf) des améliorations et des modifications aussi diverses que variées. Les possibilités sont tellement vastes que toute la question est maintenant de savoir comment faciliter l’installation, tant pour soi-même que pour une distribution publique, de toutes ces personnalisations.

Techniquement, l’introduction des plugins a permis d’ouvrir les possibilités suivantes :
-  tous les fichiers du noyau sont surchargeables [2] et toutes les fonctions appelables systématiquement [3],
-  une interface d’application (API) est maintenue par la définition d’un certain nombre de points d’entrée dans le code.

On a besoin de réaliser un plugin dans quatre cas :

-  Fonctions et options : réaliser son premier plugin, migrer et rendre portables ses fonctions et ses options pour soi ou pour les autres.

-  Les points d’entrée : injecter, le temps d’activation d’un plugin, du code au coeur de SPIP et modifier profondément son fonctionnement.

-  Modifier les fichiers natifs : en l’absence de point d’entrée, modifier des parties du code de SPIP sans intervenir concrètement sur le noyau.

-  Réecrire son propre code : inventer son propre script que l’on greffera sur SPIP.

Si vous n’avez aucun de ces objectifs en tête, ne vous bilez pas avec les pages suivantes :) Cependant, vous serez probablement intéressé par ce que peuvent vous fournir des plugins distribuées librement.

Notes

[1Rappelons que SPIP est en GPL : liberté sans restriction de l’utiliser, d’en étudier le fonctionnement et de le modifier pour ses propres usages, de le redistribuer, de redistribuer ses modifications.

[2Surcharger un fichier consiste à multiplier la lecture d’un fichier afin de lui faire prendre la dernière valeur lue. De façon très schématique, si vous surcharger un fichier qui a pour valeur "Bonjour" avec un fichier qui a pour valeur "Bonsoir", l’écran affichera "Bonsoir" et non "Bonjour".

[3Vous pouvez appeler à partir de n’importe quel fichier une fonction déjà existante, pour autant que vous ayez inclus en début de fichier le fichier qui contient la fonction que vous voulez utiliser. Ceci est particulièrement puissant, car les concepteurs de SPIP ont réalisé beaucoup de fonctions qui sont autant de routines que vous n’aurez pas à reprogrammer. On peut citer en exemple lire_fichier (qui lit un fichier), ecrire_fichier (qui écrit un fichier), preg_files (qui cherche un fichier), toutes les requetes sql et des dizaines de fonctions qui sont simplifiées au possible grâce à des routines contenues dans le code source de SPIP. Voir la doc du code pour en savoir plus.

On trouvera une liste conséquente de plugins disponibles (dont il sera possible d’étudier le code)

Auteur James Publié le : Mis à jour : 26/10/12

Traductions : català, corsu, English, Español, français, italiano, Nederlands