SPIP 1.9 - I plug-in

Il sistema di plug-in è stato reintrodotto nella versione 1.9alpha. Sostituisce il sistema precedente di plugin che era stato testato nella fase di sviluppo della 1.8 e poi tolto (vedi OldSystemPlugin)

Installare i plug-in

La descrizione del funzionamento di plugin è applicabile a partire dalla release 5616

Attivare la gestione dei Plug-in
La gestione è attivata a partire dal momento in cui è presente una cartella “plugins” nella radice del sito (in aggiunta a ecrire, IMG, dist....)
Il pulsante di amministrazione dei plugins é nel menu Configurazione, e appare solo se è selezionata l’interfaccia completa, e solo per gli amministratori.

Installare un plug-in
I plugin sono disponibili per il momento su spip-zone nella cartella _plugins_
Con SVN si può fare un checkout di _plugins_ sulla cartella locale dei plugins per installare tutti i plugins disponibili, o copiare semplicemente le cartelle di plugins che interessano nella propria cartella plugins.
non attiva il plugin

L’installazione nella cartella non attiva il plugin.

Attivare un plugin
Nel menu Configurazione, Amministrazione di plugins SPIP rileva dunque tutti i plugins installati e ne visualizza la lista.
Su ogni plugin un > mobile permette di fare apparire i dettagli concernenti il plugin in questione (versione, cartella, autore, descrizione, link alla home page del plugin).
Evidenziare la casella “Attivare il plugin” per attivare un plugin e validarlo.
Quando diversi plugin sono attivi, appaiono nell’ordine di caricamento. É possibile modificare questo ordine con le frecce salire e scendere. Il cambiamento riguarda tutte le funzioni dei plugins.
Quando diversi plugins intervengono sullo stesso trattamento (aggiungere delle icone, formattare un testo ...) sono applicate nell’ordine indicato dalla tabella.
In alcuni casi può dunque essere utile modificare quest’ordine. Ciò non è gestito automaticamente ad oggi.

Quando si pianta tutto
L’attivazione dei plugins passa per una fase di verifica minima di conformità (dichiarazione sufficiente, presenza dei file da includere) ma non è tutto verificabile così semplicemente. Dunque è possibile che un plugin scorretto (soprattutto in questo periodo di sviluppo in cui i soli plugins disponibili sono in piena evoluzione) genera un errore definitivo.
Per recuperare il controllo (disattivare manualmente un plugin malgrado l’interfaccia piantata), è sufficiente rinominare la cartella del plugin, o eliminare gli script charger_plugin_xxx.php dalla cartella data, poi tornare sul pannello di configurazione dei plugins.

Creare il proprio plugin

Come creare il proprio plugin :

Crea una cartella ’mioplugin’ nella cartella plugins.
Il plugin sarà riconosciuto da SPIP con l’aiuto del suo file di descrizione plugin.xml :

<plugin>
	<nom> <!-- Nome del plugin -->
	Nulla
	</nom>
	<auteur>	<!-- Autore del plugin -->
	_fil_
	</auteur>
	<version>
	0.1
	</version>
	<etat>
	test
	</etat>
	<description>
	L'unico plugin spip al mondo che non fa nulla, ma lo fa bene!
	</description>
	<options> <!-- file caricato ad ogni hit -->
	mes_options.php
	</options>
	<fonctions> <!-- file caricato ad ogni rigenerazione di pagina -->
	mes_fonctions.php
	</fonctions>
	<!-- classe di implementazione: spazio di nomina che darà il prefisso alle chiamate di funzione
	sul modo Nulla::
	così le funzioni fuori dallo spazio di nomina non possono essere chiamate
	questo parametro è obbligatorio e deve essere non vuoto
	-->
	<prefix> 
	Nullo
	</prefix>
	<!-- Definizioni delle funzioni che si inseriscono nelle pipeline -->
	<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>
	<!-- Il parametro azione è opzionale: se assente il metodo della classe che porta il nome della pipeline viene chiamato. Il parametro inclure è opzionale.	-->
</plugin>

Tag di descrizione :

  • <nom> permette di definire il nome del plugin come appare nel pannello di configurazione.
  • <version> permette di attribuire il numero di versione del plugin
  • <etat> permette di definire lo stato del plugin, tra dev (sviluppo), sperimentale, test, stabile.
  • <auteur> permette di attribuire il o gli autori del plugin. Si possono usare le scorciatoie tipografiche e le stringhe di lingua in questo campo.
  • <description> permette di descrivere ciò che fa il plugin. È possibile utilizzare le scorciatoie tipografiche e le stringhe di lingua in questo campo.
  • <lien> permette di dare un link html verso la homepage del plugin che dia più informazioni sul suo funzionamento.

Tag di implementazione :

  • <options> permette di definire un file che sarà caricato ad ogni hit, come lo stato del file mes_options.php.
  • <fonctions> permette di definire un file che sarà caricato ad ogni ricalcolo di pagina, come lo era il file mes_fonctions.php.
  • <prefix> permette di definire il nome dei prefissi di funzione definiti dal plugin. Per ragioni di coabitazione sana con i suoi piccoli compagni plugin, tutte le funzioni proprie del vostro plugin dovranno cominciare con questo prefisso. Guardate gli esempi del plugin “Rien” per vedere come fare. La sola costrizione è di prefissare le dichiarazioni di funzione e scrivere le vostre chiamate di funzione nel modo $cosa = Nulla_mia_funzione($val);.
  • <pipeline> permette di definire un punto d’inserzione del plugin in una pipeline di trattamento. A tal fine si utilizzano i tag seguenti :
    • <nom> dà il nome della pipeline in cui inserire la chiamate del plugin.
    • <action> dà il nome della funzione da chiamare (senza il prefisso che sarà aggiunto automaticamente da SPIP).
    • <inclure> dà il nome di un file da includere affinché la funzione sia disponibile.

I tag <nom>, <version> e <prefix> sono obbligatori. Gli altri sono opzionali.
Non è permesso utilizzare un nome di funzione identico al nome di prefisso (la funzione Nulla_nulla() sarà rifiutata perché è così e basta – per i curiosi ho una lunga storia da raccontare… -), né utilizzare i nomi di funzioni install, uninstall et configure che sono riservati per delle caratteristiche future di facile intuizione.

Per ragioni di performance, si consiglia di suddividere in modo appropriato le funzioni del proprio plugin in file separati, affinché solo le funzioni richieste siano caricate al momento degli INCLUDE

E per ulteriori risposte alle vostre domande non esitate a leggere tutti gli esempi disponibili su spip-zone

Per maggiori informazioni, vedere :

Liste delle pipelines

  • affichage_final ??
  • affiche_droite ??
  • affiche_gauche ??
  • affiche_milieu ??
  • ajouter_boutons aggiunge un pulsante nella barra dei pulsanti. Prende come parametro una tabella che modifica e ritorna :
	function Rien_ajouterBoutons($boutons_admin) {
		// se si è admin
		if ($GLOBALS['connect_statut'] == "0minirezo") {
		  // si vede il pulsante nella barra "naviguer"
		  $boutons_admin['naviguer']->sousmenu['rien_poo']= new Bouton(
			'../'._DIR_PLUGINS.'rien/ecrire/img_pack/rien-24.png', 'rien !');

		  // e e si accede alla config
		  $boutons_admin['configuration']->sousmenu['rien_config']= new Bouton(
			'../'._DIR_PLUGINS.'rien/ecrire/img_pack/rien-24.png', 'rien ?');
		} else {
		  // altrimenti, si vede una icona in più nella barra in alto
		  $boutons_admin['rien_poo']= new Bouton(
			'../'._DIR_PLUGINS.'rien/ecrire/img_pack/rien-24.png', 'rien !');
		}

		return $boutons_admin;
	}
  • ajouter_onglets aggiunge una linguetta su una pagina, prende una tabella di parametri in entrata :
    • ’data’=> la tabella di linguette,
    • ’args’=> il nome della pagina dalla quale si fa la chiamata
  • body_prive ??
  • exec_init ??
  • header_prive ??
  • insert_head ??
  • nettoyer_raccourcis_typo ??
  • pre_indexation ??
  • pre_syndication ??
  • post_syndication ??
  • pre_typo vedi PointsEntreeIncTexte
  • post_typo vedi PointsEntreeIncTexte
  • pre_propre vedi PointsEntreeIncTexte
  • post_propre vedi PointsEntreeIncTexte
  • agenda_rendu_evenement ??
  • taches_generales_cron ??

Nota Spipcontrib : questa lista di pipelines evolve continuamente. Per leggere la lista aggiornata direttamente dal codice, cerca $spip_pipeline nel file « inc_version.php »

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