Carnet Wiki

Plugin.xml

Version 7 — Juillet 2007 cam.lafit

Proposition de documentation concernant la rédaction du plugin.xml

Référence

Voir aussi
-  http://www.spip.net/fr_article3448.html
-  http://doc.spip.org/@Tuto-Se-servir...
-  http://www.spip-contrib.net/SPIP-1-...
-  http://trac.rezo.net/trac/spip-zone...

Restrictions


L’écriture du plugin ne supporte pas les caractères accentués, il faut donc leur substituer les codes HTML.

Structure initiale

Comment lire :
<!-- Ceci est un commentaire -->
titi|toto : soit titi soit toto (ou exclusif)

<plugin>
    <!-- Nom du plugin -->
    <nom> NomPlugin </nom>


<!-- Auteur du plugin -->
    <auteur> AuteurPlugin </auteur>
    <version> .1 <version>
    <etat>dev|test|stable|experimental</etat>
    <icon></icon>
    <description> Un descriptif autant complet que possible, utilisation de la syntaxe spip autorisée.</description>
    <!-- URI de documentation -->
    <lien> une url interne ou bien sur le net </lien>


<!-- précise le prefixe utilisé pour toutes les fonctions du plugin, en général le nom du plugin -->
    <prefix>unprefix</prefix>


<!-- précise le fichier à charger à chaque recalcul, partie publique -->
    <fonctions>chemin du fichier </fonctions>
    <!-- précise le fichier à charger à chaque appel de la page, partie publique -->
    <options>chemin du fichier </options>


<!-- Chemin du fichier d'installation et de mise à jour -->
    <install>chemin du fichier</install>


<!--pipeline, surcharge de fonction à des moments précis de la génération d'une page spip -->
    <pipeline>
       <!-- voir la page sur doc.spip.org, pour connaitre l'ensemble des pipeline -->
       <nom>point_entree</nom>
       <!-- nom de la fonction a appelé sans son prefixe -->
       <action>fonction</action>
       <!-- chemin du fichier contenant la fonction -->
       <inclure>fichier.php</inclure>
   </pipeline>


<!-- précise les dépendances vis-à-vis de spip ou d'autres plugins -->
   <necessite id="nomplugin" version="[versionminimale;versionmax]" />


<!-- indique un zip externe nécessaire -->
   <!-- à partir de spip svn 9783 -->
   <!-- id indique le répertoire où est chargé le zip,  plugins/auto/lib/nom -->
   <necessite id="lib:nom" src="http://url-complete-du/fichier.zip" />


<!-- à préciser -->
   <chemin dir='' />


</plugin>

Précision sur <install>

Lors de la déclaration de la balise , tu indiques juste le
nom du fichier qui doit être appelé.

Il y a un consensus :
-  pour avoir ce fichier dans le répertoire base de ton plugin
-  d’utiliser le prefixe déclaré dans prefixeplugin

Ce qui donne
base/prefixeplugin_upgrade.php

Après dans ce fichier. On déclare une fonction :

function prefixeplugin_install($action){
switch ($action){
 case 'test':
 //Contrôle du plugin à chaque chargement de la page d'administration
 break;
 case 'install':
 //Appel de la fonction d'installation. Lors du clic sur l'icône
depuis le panel.
 break;
 case 'uninstall':
 //Appel de la fonction de suppression
 break;
}
}

Donc ’test’ se lance à chaque fois qu’on accède à la page
d’administration des plugins. Cela peut donc servir lors des mises à
jours.
’install’ sert aux opérations lors de l’activation du plugin.
’uninstall’ sert aux opérations lors de la suppression du plugin.

Dans les exemples que j’ai pu voir test et install sont assez proches.

Précision sur <necessite>

Pour les plugin et spip, c’est opérationnel depuis environ la version svn 9023. Dans l’attribut version utilisez l’attributr versionn utiliser des crochets pour inclure inlcure et des parenthèses pour exclure. Voir http://trac.rezo.net/trac/spip/chan....

Lors de l’utilisation pour requérir une bibliotheque externe, la fonction find_lib() permet de controler sa présence. La fonction retourne le chemin de la bibliothéque si celle ci existe autrement false.

Exemple d’utilisation :
$cheminlib = find_lib(nom) ou $cheminlib = find_lib(nom/sousrepertoire)

if (!$dir_spell)
    return $flux;