SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 254 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 ?
  • [Se connecter]

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

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

Ça spipe par là