SystemeDePlugin

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Le système de plugin a été réintroduit dans la version 1.9alpha Il remplace l’ancien système de plugins qui avait été testé pendant la phase de dévelopement de la 1.8 puis enlevé (voir OldSystemDePlugin)

Installer les plugins

La description du fonctionnement du systeme de plugin est applicable a partir de la release 5616

Activer la gestion des Plugins
La gestion est active a partir du moment ou un repertoire ’plugins’ existe a la racine du site (a cote de ecrire, IMG, dist ...)
Le bouton d’administration des plugins est dans le menu Configuration, et n’apparait que lorsque l’interface complète est selectionnée, pour les administrateurs uniquement.

Installer un plugin
Les plugins sont pour le moment disponibles sur spip-zone dans le repertoire _plugins_
Avec svn vous pouvez faire un checkout de _plugins_ sur votre repertoire local plugins pour installer tout les plugins disponibles, ou copier simplement les dossiers de plugins qui vous interessent dans votre dossier plugins
L’installation dans le dossier n’active pas le plugin.

Activer un plugin
Dans le menu Configuration, Administration des Plugin
SPIP detecte alors tous les plugins installes et en affiche la liste.
Sur chaque plugin, un > basculant permet de faire apparaitre les details concernant le plugin en question (version, repertoire, auteur, description, lien vers la home page du plugin )
Cocher la case ’Activer le plugin’ pour activer un plugin et valider.
Quand plusieurs plugins sont actifs, ils apparaisent dans l’ordre de chargement. Il est possible de modifier cet ordre avec les fleches monter et descendre. Le changement concerne toutes les fonctions des plugins.
Quand plusieurs plugins interviennent sur le meme traitement (ajouter des icones, formatage du texte ...) ils sont appliques dans l’ordre indique par le tableau.
Dans certains cas il peut donc etre utile de modifier cet ordre. Ceci n’est pas gere automatiquement a ce jour.

Quand tout est plante
L’activation des plugins passe par une phase de verification minimale de conformite (declarations suffisantes, presence des fichiers a inclure ...) mais tout n’est pas verifiable simplement. Il est donc possible qu’un plugin indelicat (surtout dans cette periode de developpement ou les seuls plugins dispo sont en pleine evolution) genere une erreur definitive.
Pour recuperer la main (desactiver manuellement un plugin malgre l’interface plantee), il suffit de renommer le dossier du plugin, ou de supprimer les scripts charger_plugin_xxx.php du repertoire data, puis de retourner dans le panneau de configuration des plugins.

Creer son plugin

Comment créer son plugin :
Creer un dossier ’monplugin’ dans le repertoire plugins.
Le plugin sera reconnu par SPIP a l’aide de son fichier de description plugin.xml :

<plugin>
	<nom> <!-- Nom du plugin -->
	Rien
	</nom>
	<auteur>	<!-- Auteur du plugin -->
	_fil_
	</auteur>
	<version>
	0.1
	</version>
	<etat>
	test
	</etat>
	<description>
	Le seul plugin spip au monde qui ne fait rien, mais qui le fait bien !
	</description>
	<options> <!-- fichier charge a chaque hit -->
	mes_options.php
	</options>
	<fonctions> <!-- fichier charge a chaque recalul de page -->
	mes_fonctions.php
	</fonctions>
	<!-- classe d'implementation : espace de nommage qui prefixera les appels de fonction
	sur le mode Rien::
	ainsi les fonctions hors espace de nommage ne peuvent etre appelees
	ce parametre est obligatoire et doit etre non vide
	-->
	<prefix> 
	Rien
	</prefix>
	<!-- Definitions des fonctions qui s'inserent dans les pipelines -->
	<pipeline>
		<nom>post_propre</nom>
		<action>leFiltre</action>
	</pipeline>
	<pipeline>
		<nom>ajouter_boutons</nom>
		<action>ajouterBoutons</action>
		<inclure>Rien.php</inclure>
	</pipeline>
	<pipeline>
		<nom>ajouter_onglets</nom>
		<action>ajouterOnglets</action>
		<inclure>Rien.php</inclure>
	</pipeline>
	<!-- Le parametre action est facultatif : en son absence la methode de la classe portant le nom du pipeline est appelee. Le parametre inclure est facultatif.	-->
</plugin>

Balises de description :

  • <nom> permet de definir le nom du plugin tel qu’apparaissant dans le panneau de configuration
  • <version> permet de donner le numero de version du plugin
  • <etat> permet de definir l’etat du plugin, parmi dev (developpement), experimental, test, stable
  • <auteur> permet de renseigner le ou les auteurs du plugin. Vous pouvez utiliser les raccourcis typo et chaine de langue dans ce champ
  • <description> permet de decrire ce que fait le plugin. Vous pouvez utiliser les raccourcis typo et chaine de langue dans ce champ
  • <lien> permet de donner un lien html vers la homepage du plugin qui donne plus d’information sur son fonctionnement

Balises d’implementation :

  • <options> permet de definir un fichier qui sera charge a chaque hit, comme l’etait le fichier mes_options.php
  • <fonctions> permet de definir un fichier qui sera charge a chaque recalcul de page, comme l’etait le fichier mes_fonctions.php
  • <prefix> permet de definir le nom des prefixes de fonction definies par le plugin. Pour des raisons de cohabitation saine avec ses petits copains plugins, toutes les fonctions propres a votre plugin devront commencer par ce prefixe. Regardez les exemples du plugin Rien pour voir comment faire. La seule contrainte est de prefixer les declarations de fonction et d’ecrire vos appels de fonction sur le mode $truc = Rien_ma_fonction($val);.
  • <pipeline> permet de definir un point d’insertion du plugin dans un pipeline de traitement. Pour cela on utilise les tags suivants :
    • <nom> donne le nom du pipeline ou inserer l’appel au plugin
    • <action> donne le nom de la fonction a appeler (sans le prefixe qui sera ajoute automatiquement par SPIP)
    • <inclure> donne le nom d’un fichier a inclure pour que la fonction soit disponible

Les tags <nom>, <version> et <prefix> sont obligatoires. Les autres sont facultatifs.
Il n’est pas autorise d’utiliser un nom de fonction identique au nom de prefixe (La fonction Rien_rien() sera refusee parce que c’est comme ca - pour les curieux je peux raconter l’histoire... -), ni d’utiliser noms les fonctions install, uninstall et configure qui sont reserves pour des evolutions que vous devinez deja.

Pour des raisons de performance, il est conseille de decouper proprement les fonctions de son plugin dans des fichiers separes, afin que seules les fonctions requises soient chargees lors des include.

Et pour plus de reponses a vos questions n’hesitez pas a regarder tous les exemples disponibles sur la zone.

Pour plus d’information, voir :

Listes des pipelines

Cf. Tuto : Se servir des points d’entrée pour modifier un comportement de spip sur le site de doc

  • delete_tables ???
  • ajouter_boutons ajoute un bouton dans la barre de bouton. Prend en paramètre un tableau qu’il modifie et retourne :
    	function Rien_ajouterBoutons($boutons_admin) {
    		// si on est admin
    		if ($GLOBALS['connect_statut'] == "0minirezo") {
    		  // on voit le bouton dans la barre "naviguer"
    		  $boutons_admin['naviguer']->sousmenu['rien_poo']= new Bouton(
    			'../'._DIR_PLUGINS.'rien/ecrire/img_pack/rien-24.png', 'rien !');
    
    		  // et on accede a la config
    		  $boutons_admin['configuration']->sousmenu['rien_config']= new Bouton(
    			'../'._DIR_PLUGINS.'rien/ecrire/img_pack/rien-24.png', 'rien ?');
    		} else {
    		  // sinon, on voit un icone de plus dans la barre du haut
    		  $boutons_admin['rien_poo']= new Bouton(
    			'../'._DIR_PLUGINS.'rien/ecrire/img_pack/rien-24.png', 'rien !');
    		}
    
    		return $boutons_admin;
    	}
  • ajouter_onglets ajoute un onglet sur une page. prend un tableau de paramètre en entré :
    • ’data’=> le tableau d’onglets,
    • ’args’=> le nom de la page depuis laquelle se fait l’appel
  • pre_indexation ??
  • pre_syndication ??
  • post_syndication ??
  • pre_typo voir PointsEntreeIncTexte
  • post_typo voir PointsEntreeIncTexte
  • pre_propre voir PointsEntreeIncTexte
  • post_propre voir PointsEntreeIncTexte
  • yen manque

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

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

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom