SPIP 1.9 - Les Plugins

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éveloppement de la 1.8 puis enlevé (voir OldSystemDePlugin)

Installer les plugins

La description du fonctionnement du système de plugin est applicable à partir de la release 5616

Activer la gestion des Plugins
La gestion est activé à partir du moment ou un répertoire ’plugins’ existe à la racine du site (à côté de ecrire, IMG, dist ...)
Le bouton d’administration des plugins est dans le menu Configuration, et n’apparaît que lorsque l’interface complète est sélectionnée, pour les administrateurs uniquement.

Installer un plugin
Les plugins sont pour le moment disponibles sur spip-zone dans le répertoire _plugins_
Avec svn vous pouvez faire un checkout de _plugins_ sur votre répertoire local plugins pour installer tout les plugins disponibles, ou copier simplement les dossiers de plugins qui vous intéressent 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 détecte alors tous les plugins installés et en affiche la liste.
Sur chaque plugin, un > basculant permet de faire apparaitre les détails concernant le plugin en question (version, répertoire, 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 flèches monter et descendre. Le changement concerne toutes les fonctions des plugins.
Quand plusieurs plugins interviennent sur le même traitement (ajouter des icônes, formatage du texte ...) ils sont appliqués dans l’ordre indiqué par le tableau.
Dans certains cas il peut donc être utile de modifier cet ordre. Ceci n’est pas géré automatiquement à ce jour.

Quand tout est planté
L’activation des plugins passe par une phase de vérification minimale de conformité (déclarations suffisantes, présence des fichiers à inclure ...) mais tout n’est pas vérifiable simplement. Il est donc possible qu’un plugin indélicat (surtout dans cette période de développement ou les seuls plugins dispo sont en pleine évolution) génère une erreur définitive.
Pour récuperer la main (désactiver manuellement un plugin malgre l’interface plantée), il suffit de renommer le dossier du plugin, ou de supprimer les scripts charger_plugin_xxx.php du répertoire data, puis de retourner dans le panneau de configuration des plugins.

Créer son plugin

Comment créer son plugin :

Créer un dossier ’monplugin’ dans le répertoire 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 définir le nom du plugin tel qu’apparaissant dans le panneau de configuration.
  • <version> permet de donner le numéro de version du plugin
  • <etat> permet de définir l’état 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 chaînes de langue dans ce champ.
  • <description> permet de décrire ce que fait le plugin. Vous pouvez utiliser les raccourcis typo et chaînes 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’implémentation :

  • <options> permet de définir un fichier qui sera chargé à chaque hit, comme l’était le fichier mes_options.php.
  • <fonctions> permet de définir un fichier qui sera chargé à chaque recalcul de page, comme l’était le fichier mes_fonctions.php.
  • <prefix> permet de définir le nom des préfixes de fonction définies par le plugin. Pour des raisons de cohabitation saine avec ses petits copains plugins, toutes les fonctions propres à votre plugin devront commencer par ce préfixe. Regardez les exemples du plugin « Rien » pour voir comment faire. La seule contrainte est de préfixer les declarations de fonction et d’ecrire vos appels de fonction sur le mode $truc = Rien_ma_fonction($val);.
  • <pipeline> permet de définir un point d’insertion du plugin dans un pipeline de traitement. Pour cela on utilise les tags suivants :
    • <nom> donne le nom du pipeline où insérer l’appel au plugin.
    • <action> donne le nom de la fonction à appeler (sans le préfixe qui sera ajouté automatiquement par SPIP).
    • <inclure> donne le nom d’un fichier à inclure pour que la fonction soit disponible.

Les tags <nom>, <version> et <prefix> sont obligatoires. Les autres sont facultatifs.
Il n’est pas autorisé d’utiliser un nom de fonction identique au nom de préfixe (La fonction Rien_rien() sera refusée parce que c’est comme ca - pour les curieux je peux raconter l’histoire... -), ni d’utiliser les noms de fonctions install, uninstall et configure qui sont réservés pour des évolutions que vous devinez déjà.

Pour des raisons de performance, il est conseillé de découper proprement les fonctions de son plugin dans des fichiers séparés, afin que seules les fonctions requises soient chargées lors des include.

Et pour plus de réponses à vos questions n’hesitez pas à regarder tous les exemples disponibles sur spip-zone.

Pour plus d’information, voir :

Listes des pipelines

  • 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ètres en entré :
    • ’data’=> le tableau d’onglets,
    • ’args’=> le nom de la page depuis laquelle se fait l’appelle
  • pre_indexation ??
  • pre_syndication ??
  • post_syndication ??
  • pre_typo voir PointsEntreeIncTexte
  • post_typo voir PointsEntreeIncTexte
  • pre_propre voir PointsEntreeIncTexte
  • post_propre voir PointsEntreeIncTexte
  • yen manque

Nota Spipcontrib : cette liste de pipelines est évolutive aussi regardez dans « inc_version.php » et cherchez $spip_pipeline et vous trouverez une liste bien plus à jour.

Voir aussi les rubriques Téléchargement des plugins et Réaliser un premier plugin.

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