Ressources pour développer des plugins Spip
La base de données Spip :
Déclarer et ajouter des tables dans la base de données Spip :
Structure de plugin.xml :
Liste des pipelines :
Utiliser les pipelines :
Contenu d’un fichier exec :
Tuto sur la création de plugins :
Voilà quelques plugins spip que j’utilise pour ce site, pour faciliter le suivie de la vie du site et la rédaction d’article.
![]()
gravatar.com propose d’associer une adresse email, à un avatar. Ce plugin permet d’ajouter au forum l’affichage des gravatars des personnes qui répondent aux articles.
Plus d’information sur Spip-contrib-Gravatar

Le plugin couteau-suisse propose une liste d’outils et de fonctionnalité permettant d’améliorer la gestion de votre site Spip
Plus d’information sur Spip-contrib-Couteau-Suisse

Le plugin Spip-bonux améliore le confort d’usage des formulaires de saisie de l’espace privé. Il ajoute également une boucle (POUR) pour boucler sur les tableaux php, ainsi qu’une boucle (CONDITION) pour affiner les tests conditionnels.
Plus d’information sur Spip-contrib-Spip-Bonux
Avant de passer à la version 2 de Spip, j’utilisai un plugin permettant de fournir à google un sitemap. La version 2 l’intègre nativement, ce qui allège un peu la charge dû au plugin
Ce plugin qui commence à dater un peu est disponible toujours sur Spip-contrib
Voilà mes plugins préférés, et vous, lesquels avez vous choisis ??
Dans cet article, nous allons voir un un exemple de création de plugin, pour vous guider dans votre développement. Le plugin suivant a pour but de créer un filtre taille_spip qui augmente la taille du mot spip dans le contenu des articles.
.
Votre fichier plugin.xml :
<plugin>
<nom>taille Spip</nom>
<version>1.0</version>
<prefix>demo</prefix>
<etat>experimental</etat>
<auteur>Creamama [contact->mailto:postmaster@creamama.fr]
_ [mon site->http://www.creamama.fr]</auteur>
<description>Ce plugin est une démonstration. Il Augmente la taille du mot spip dans les articles</description>
<fonctions>vos_fonctions.php</fonctions>
<options>vos_options.php</options>
</plugin>vos_fonctions.php est un fichier qui sera rechargé à chaque recalcule de la page. On y définit généralement les filtres, balises ou critères et n’est utilisé que dans la partie public du site, lors du calcul du cache.
vos_options.php est un fichier qui sera rechargé à chaque appel de page.
Le code suivant concerne la page vos_fonctions.php. le nom de la fonction définie est le même que le nom du filtre. Ainsi le filtre sera appelé par taille_spip.
<?php
function taille_spip($texte) {
global $taille;
return preg_replace('/([^(class=")])(spip)/i',
'$1<span style="font-size: '.$taille.';">$2</span>',
$texte);
}
?>Ensuite il faut définir la variable $taille dans le fichier vos_options.php
<?php
$taille = '30px';
?>Voila le plugin est fini, il ne reste plus qu’à y faire appel dans vos squelettes comme ceci :
[(#TEXTE|taille_spip)]
Voila, merci d’avoir suivi ce tutoriel
Nous voici maintenant dans l’étape numéro 2 de la création d’un plugin pour Spip.
Dans cet article, nous allons voir qu’est ce qu’un pipeline, comment fonctionne-t-il et quand l’utiliser.
Un pipeline se définit dans le fichier plugin.xml du plugin, et est un point d’entrée dans le labyrinthe de code de Spip. Les développeurs de Spip ont choisi de créer ces points d’entrées, pour que le développeur de plugins n’ait pas à aller gratter partout. Ces points d’entrées permettent d’insérer du code, des fonctions à des endroits précis.
Il se définit comme cela :
<pipeline>
<nom>point_entree</nom>
<action>fonction</action>
<inclure>fichier.php</inclure>
</pipeline><pipeline> : est une balise qui contient elle-même les 3 balises suivantes et dont on se sert pour insérer du code php dans l’un des points d’entrée de spip , par exemple, pour ajouter un élément graphique dans l’interface privée, ou un traitement du texte via l’application d’un raccourci.
<nom> : contient le nom du point d’entrée au niveau duquel le plugin agira.
<action> : contient le nom de la fonction (sans son préfixe !)
<inclure> : contient le nom du fichier dans lequel sera défini la fonction qui devra, elle, avoir strictement pour nom : préfixe_action.
En fait, la fonction php appelée par le pipeline, va recevoir comme argument un flux. Elle peut suivant les besoins le traiter, y ajouter des informations et le renvoyer modifié.
Dans la suite de cet article, je vais reprendre un tableau trouvé sur le site doc.spip.org
| Nom | Catégorie | Rôle |
|---|
| affichage_final | Site Public | effectuer des calculs supplémentaires sur le contenu de la page calculée, juste avant son affichage. Hors cache, donc. |
| affiche_droite | Espace privé |
| affiche_gauche | Espace privé |
| affiche_milieu | Espace privé |
| ajouter_boutons | Espace privé | Ce sont les boutons qui sont tout en haut du site, (A suivre, édition, forum, ...) |
| ajouter_onglets | Espace privé | Ce sont les sous menus des boutons, par exemple tous vos articles et mots clés pour le bouton édition |
| body_prive | Espace privé |
| exec_init | Espace privé |
| header_prive | Espace privé | ajoute une ou des lignes de votre choix à l’intérieur de la balise html head des pages de l’espace privé |
| insert_head | Site Public |
| nettoyer_raccourcis_typo | Texte traiter une chaine avant d’être envoyé à la fonction couper() ??? |
| pre_enregistre_contenu | Tache de fond |
| pre_indexation | Tache de fond |
| pre_propre | Typographie |
| pre_syndication | Tache de fond |
| pre_typo | Typographie |
| post_propre | Typographie |
| post_syndication | Tache de fond |
| post_typo | Typographie |
| rendu_evenement | ? |
| taches_generales_cron | Tache de fond |
| traiter_raccourci_lien | Texte |
Dans l’article qui va suivre, je vais vous expliquer comment réaliser votre propre plugin, en me citant comme exemple (c’est le seul exemple que j’ai).
La première chose à faire quand on décide de créer son plugin, c’est de bien cerner toutes les fonctions de notre plugin afin de savoir si on va aller dans les articles, les brèves ou dans n’importe quoi d’autre.
Ensuite, dans le dossier de votre plugin, il faut créer un fichier plugin.xml.
Dans ce fichier vont se trouver toutes les informations sur le plugin. dans le tableau qui suit, je vais essayer de lister un maximum de balises, avec la bonne description.
| Balises | Descriptions |
|---|
<plugin></plugin> |
Balise qui doit être ouverte à la première ligne du document et fermée à la dernière |
<nom></nom> |
Le nom de votre plugin, celui qui apparaîtra dans l’interface de gestion des plugins |
<auteur></auteur> |
Le nom de l’auteur du plugin, s’il y a plusieurs auteurs, les mettre tous dans la même balise |
<version></version> |
La version de votre plugin |
<etat></etat> |
l’état de votre plugin, expérimental pour expérimentale, test pour test, dev pour développement et stable pour stable |
<description></description> |
La description de votre plugin, ce qu’il fait |
<prefix></prefix> |
le préfixe (avant le mot) qui précédera les noms de toutes vos fonctions |
<fonctions></fonctions> |
Le fichier qui contient les principales fonctions de votre plugin, vous devez y mettre le nom de ce fichier, placé à la racine du dossier, en évitant les noms déjà occupés par les autres fichiers Spip |
<options></options> |
Le nom du fichier qui contient vos options, à placer à la racine du dossier, en évitant les noms de fichiers utilisés par Spip |
D’autres champs seront peut être à ajouter un peu plus tard, suivant vos besoins.
Donc en résumé, vous avez un fichier plugin.xml, un fichier php pour vos fonctions et un pour vos options.
Je suis un concepteur et développeur web à Grenoble. Je développe essentiellement avec le CMS Spip. Actuellement en contrat chez Territorial, je continue ma veille technologique, et vous fais partager ce que je trouve utile et pratique.