SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 248 visiteurs en ce moment

Accueil > Outils pour plugins > Tutoriaux pour Plugins > Création d’un plugin

Création d’un plugin

admin_themes & squelettes

28 mai 2007 (Date de rédaction antérieure : 11 décembre 2006). – par Jacques J.

Toutes les versions de cet article : [français] [italiano]

11 votes

L’écriture de plugins n’est pour moi qu’un moyen de découvrir les nouvelles fonctionnalités de SPIP depuis sa version 1.9. Il existe déjà d’autres plugins sans doute plus perfomants qui font ce que mes plugins proposent.

Le moment venu, je me pencherai sur des plugins développés sur la Zone et qui ont pour vocation d’être enrichis de manière collective.

En septembre dernier, je me suis lancé dans la création d’un plugin. Comme je venais de tester un blog proposé par mon hébergeur et propulsé par wordpress, je me suis dis qu’il serait intéressant d’avoir un outil d’installation de thèmes, un peu comme celui proposé par ce dit blog. (Il est parfois plus difficile de définir les besoins que de développer)

Sommaire

  1. Premier pas
  2. Le fichier plugin.xml
  3. Fichier utilisé dans le plugin admin_themes & squelettes
  4. La mise en place d’un bouton
  5. La mise en place d’onglets
  6. Conclusion

Premiers pas

Trouver de la documentation sur la création de plugins - les exemples / explications sur la création de plugins sont à rechercher sur :

-  Tutoriaux pour Plugins
-  SPIP 1.9 - Les Plugins
-  http://www.spip.net/fr_article3448.html
-  http://www.spip.net/fr_article3458.html

Depuis il est possible de trouver d’autres liens.

Une intervention de F. Ducas sur le même sujet voir http://spip.graphismes.free.fr/spip... sur [Spip-Dev] le 13 septembre 2006 m’a vraiment éclairé :

Je vais le mettre sur la doc des plugins quand j’ai le temps. Moi je suis parti de là : http://www.spip-contrib.net/SPIP-1-...

C’est vrai que c’est un peu touffu comme système. En fait, tu as quatre façons de faire tourner un plugin :

1. tu recrées dans ton dossier de plugin l’architecture originale de spip.

Par exemple, tu peux modifier (c’est un exemple) le fichier ecrire/exec/articles_forum.php et tu le mets dans plugins/TonPlugin/exec/articles_forum.php : quand ton plugin sera activé, c’est ce fichier qui sera lu et non le fichier natif de SPIP. Quand les concepteurs de spip modifieront le fichier ecrire/exec/articles_forum.php dans la version de développement, tu devras adapter ton fichier plugins/TonPlugin/exec/articles_forum.php pour qu’il soit identique (moins tes modifs) au nouveau fichier ecrire/exec/articles_forum.php : on appelle ça “suivre la SVN” (insérer les modifs apportées par la version de développement de SPIP à ton fichier de plugin, pour autant que ton fichier - celui qui porte le même nom que le tiens - ait été modifié dans la version de développement).

2. tu peux utiliser les pipelines.

J’avoues m’être cassé les dents sur l’organisation des pipelines. Ce que j’en ai compris, c’est que tu définis dans ton fichier plugin.xml le pipeline que tu veux utiliser, puis tu mets dans un fichier php, dont tu as donné le nom à plugin.xml pour le pipeline en question, la fonction qui insère ce que tu veux dans un pipeline. Bref, une analogie sera mieux… un pipeline c’est comme si tu envoies ce qu’on appelait un pneu il y a quelques temps : tu mets un courrier à un bout du tuyau, et le courrier ressort chez le destinataire à l’autre bout du tuyau (où si tu veux du plus djeunes : tu as une porte d’entrée sur un monde parallèle qui t’emmène dans un autre monde quand tu la traverses). En d’autres termes, les concepteurs ont inclus dans le code de SPIP une variable “machin” (un “pipeline” machin), et la variable machin est définie dans ton plugin et nulle part ailleurs : si un plugin défini “machin”, “machin” sera inséré dans le coeur de SPIP là où la place de la variable est écrite (d’où des incompatibilités de plugins si deux plugins définissent “machin”) ; si aucun plugin ne définit “machin”, le code de SIP n’est pas modifié. J’ai compris ça en lisant cette doc et en essayant d’abord d’insérer une nouvelle icône à l’espace privé (bon exemple pour comprendre comment ça fonctionne) : SPIP 1.9 - Les Plugins

3. tu peux utiliser ton propre script tout neuf et quasiment indépendant du code de SPIP.

Pour cela, il faut comprendre comment tu ajoutes un bouton et comment ce bouton exécute une page (en gros on exécute une page via l’insertion d’un bouton - voir le lien donné au 2). Cette page contient une fonction qui s’éxécute, et après tu peux à peu près faire tout ce que tu veux. C’est comme ça que mon plugin “habillages” insère un nouvel onglet, lequel onglet exécute un script dans le répertoire exec de mon plugin, et que vogue la galère.

4. tu indiques dans plugin.xml le fichier d’options

(chargé à chaque hit, donc exécutant son contenu à chaque hit) - attention : toutes les options classiques de mes_options.php ne fonctionnent pas dans ce fichier, comme pour redéfinir l’img_pack - et le fichier de fonctions (jamais utilisé).

Le fichier plugin.xml

La présence de ce fichier est indispensable. Il doit suivre une syntaxe particulière. Les points indispensables : cf spip.net

Fichier utilisé dans le plugin admin_themes & squelettes

Plus de détails sur doc.spip|Doc.spip.orgfr->http:...

La mise en place d’un bouton

Dans le fichier de création de bouton vous aurez un code semblable à celui-ci :

Il faut décider à quel endroit le nouveau bouton (sous menu) apparaitra. Dans l’exemple donné, il sera placé dans Edition grâce à la valeur ‘naviguer’ de $boutons_admin

Petit tableau récapitulatif :

-  $boutons_admin[’accueil’] => A suivre
-  $boutons_admin[’naviguer’] => Edition
-  $boutons_admin[’forum’] => Forum
-  $boutons_admin[’auteurs’] => Auteurs
-  $boutons_admin[’statistiques_visites’] => Statistiques
-  $boutons_admin[’configuration’] => Configuration
-  $boutons_admin[’aide_index’] => Aide
-  $boutons_admin[’visiter’] => Visiter

La création de boutons ou d’onglets implique la création d’un répertoire /exec dans le répertoire du plugin, d’un fichier .php contenant une fonction exec_prefix retenu pour le plugin dans notre cas function exec_admin_themes().

Dans cette fonction sera placé le code d’exécution de notre plugin, ou tout du moins une partie du code, le reste se trouvant dans d’autres fichiers qui seront inclus ou appelés.

La mise en place d’onglets

Pour voir des onglets, il suffit de cliquer sur "Configuration" : il s’agit par exemple de ’Contenu du site’, ’Interactivité’, ’Fonctions avancées’.

Dans notre exemple, une page est crée dans la partie privée du site pour afficher un choix possible de thèmes. Un thème est composé au minimum de deux fichiers :
-  plugin.xml
-  habillage.css
A ceux-ci peuvent se rajouter
-  impression.css
-  des images...

Pour ma part, je rajoute un fichier .png, du même nom que le thème, qui me permet d’afficher une vignette représentant le thème. Si ce fichier est absent, une image est affichée par défaut. Comme cela, la sélection d’un thème est facilitée.

Extrait du code :

La fonction reprend le ’prefix’ du plugin auquel on ajoute _ajouter_onglets (le nom de l’action déclarée dans plugin.xml). Le paramètre $flux représente le flux (dans notre cas vide) auquel on rajoute les informations pour l’affichage de l’onglet (Bouton) telles l’image, le titre affiché et le lien sur un fichier php dont on ne donne que le nom sans son extension, ce fichier étant placé dans le répertoire /exec du plugin.

Si par exemple vous voulez rajouter un onglet à ’Configuration’, cette fonction ajoutera dans le flux retouné un onglet avec ses propriétés (image, titre, lien).

Conclusion

En espérant que ces explications vous aurons donné envie de passer à la création de plugins, je vous recommande si vous hésitez encore, de regarder le code des plugins proposés. Par exemple, après être resté dans la partie privée du site, je me suis inspiré du plugin jQuery pour « pluginiser » un code javascript qui permet d’arrondir les angles d’une div, d’un form et d’y incorporer une image en fond dans la partie publique du site.

Le plugin admin_themes&squelettes est téléchargeable ici
sa documentation

Voir en ligne : http://spip192.jermer.fr

Dernière modification de cette page le 30 mai 2015

Retour en haut de la page

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Réservation d’événements

    16 mars 2015 – 241 commentaires

    Ce plugin permet d’offrir aux visiteurs de s’inscrire pour un évènement du plugin Agenda et de gérer les réservations enregistrées. Installation Le plugin s’installe comme n’importe quel plugin. il nécessite : Agenda API de vérification (...)

  • Moulinette

    17 juillet 2015 – 34 commentaires

    Un squelette qui monte et qui descend ! Moulinette est un squelette basé sur le thème Grayscale (documentation) pour Bootstrap 3. Le type de site attendu est un site en une seule page : une rubrique avec quelques articles, des titres courts, des (...)

  • Formulaire de contact avancé

    23 mars 2009 – 1372 commentaires

    Un formulaire de contact configurable, avec de multiples options.

  • Plugin « Agrandir la largeur de page »

    3 août 2015 – 21 commentaires

    Ce plugin permet d’agrandir la largeur de la page dans l’espace privé de SPIP. Vous pourrez personnaliser cette largeur si besoin. Préambule Dans l’espace privé de SPIP, lorsque nous sommes connectés, nous pouvons choisir dans nos préférences (...)

  • Levenshtein

    9 mai 2016 – commentaires

    Proposition de mots lors de la recherche. La principale vocation du plugin Levenshtein est de proposer des corrections de mots lors de la recherche. Dépendance Pour fonctionner le plugin a besoin d’un lexique dans lequel faire les (...)