SPIP-Contrib

SPIP-Contrib

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

273 Plugins, 191 contribs sur SPIP-Zone, 57 visiteurs en ce moment

Home page > Strumenti per i Plugin > Tutoriaux pour Plugins > Creazione di un Plug-in

Creazione di un Plug-in

24 settembre 2007 – di mmmx – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

Tutte le versioni di questo articolo: [français] [italiano]

2 votes

La scrittura di plugins è per me soltanto un mezzo per scoprire le nuove funzionalità di Spip dalla sua versione 1.9. Esistono già diversi plugins certamente più perfomanti che fanno ciò che i miei plugins propongono. Al momento stabilito, mi dedicherò a plugins sviluppati sulla «zona» e che hanno per vocazione di essere arricchiti in modo collettivo.

Feedback dell’esperienza di creazione di un plugin.

Vedere in linea: http://spip.jermer.fr

Nel settembre scorso, mi sono lanciato nella creazione di un plugin. Poiché avevo appena provato un blog proposto da mio host ed azionato da wordpress, mi sono detto che sarebbe stato interessante avere uno strumento di istallazione di temi, un po’ come quello proposto da detto blog. (A volte è più difficile definire le necessità che sviluppare il codice)

  1. Primi passi
  2. il file plugin.xml
  3. file utilizzato nel plugin admin_themes & modelli di spip
  4. inserire un bottone
  5. inserire unghie
  6. conclusione

Primi passi


Trovare documentazione sulla creazione di plugins
-  gli esempi/spiegazioni sulla creazione di plugins sono da ricercare su:
-  http://www.spip-contrib.net/-Tutoriaux-pour-Plugins-
-  http://www.spip-contrib.net/SPIP-1-9-Les-Plugin
-  http://www.spip.net/fr_article3448.html
-  http://www.spip.net/fr_article3458.html Ormai è possibile trovare altri link.

Un intervento di F. Ducas sullo stesso argomento su Spip-Dev del 13 settembre 2006 mi ha realmente illuminato.

Lo metterò sul doc. dei plugins quando ho tempo.

Io sono partito di là: http://www.spip-contrib.net/SPIP-1-...

È vero che è un po’ contotrto come sistema.

In realtà, hai quattro modi di fare un plugin:

1. Ricrei nella tua cartella di plugin l’architettura originale di spip.

Ad esempio, puoi modificare (è un esempio) il file ecrire/exec/articles_forum.php e lo metti in plugins/TonPlugin/exec/articles_forum.php: quando il tuo plugin sarà attivato, è questo file che sarà letto e non il file indigeno di SPIP. Quando i progettisti di spip modificheranno il file ecrire/exec/articles_forum.php nella versione di sviluppo, dovrai adattare il tuo file plugins/TonPlugin/exec/articles_forum.php perché sia identico (a parte le tue modifiche) al nuovo file ecrire/exec/articles_forum.php: si tratta di «seguire la SVN» (inserire le modifiche apportate dalla versione di sviluppo di SPIP al tuo file di plugin, sempre che il tuo file - quello che porta lo stesso nome - sia stato modificato nella versione di sviluppo).

2. Utilizzare le pipeline

Riconosco di essermi rotto i denti sull’organizzazione delle pipeline. Ciò che ne ho compreso, è che tu definisci nel tuo file plugin.xml la pipeline che vuoi utilizzare, quindi metti in un file php, di cui hai dato il nome a plugin.xml per la pipeline in questione, la funzione che inserisce ciò che vuoi in una pipeline. In breve, un’analogia sarà meglio... una pipeline è come la posta pneumatica di qualche tempo fa: metti una lettera in un cilindro che infili in un tubo e quello arriva dall’altra parte del condotto, dove la tua posta arriva al destinatario. Oppure: hai una porta d’entrata su un mondo parallelo che ti porta in un altro mondo quando tu la attraversi. In altri termini, i progettisti hanno incluso nel codice di SPIP una variabile «machin» (una «pipeline» machin), e la variabile machin è definita esclusivamente nel tuo plugin e da nessuna parte: se un plugin definisce «machin», «machin» sarà inserito nel core di SPIP, lì dove compare il nome della variabile (da cui l’incompatibilità di due plugins definiscono se entrambe definiscono «machin»); se nessun plugin definisce «machin», il codice di SPIP non è modificato. Ho compreso questo leggendo questo doc e provando inizialmente ad inserire una nuova icona nello spazio privato (un buon esempio per capire come funziona): http://www.spip-contrib.net/SPIP-1-...

3. Utilizzare il tuo script del tutto nuovo e quasi indipendente dal codice di SPIP

Per far ciò, occorre comprendere come si aggiunge un bottone e come questo bottone genera una pagina (più o meno basta inserire un bottone per generare una nuova pagina - vedere il link dato al punto 2). La pagina allora conterrà una funzione che viene eseguita, e a quel punto puoi fare quasi tutto ciò che vuoi. È così che i miei plugin «habillage» inseriscono una nuova unghia, e queste unghie eseguono uno script delle cartella exec del mio plugin.

4. indichi in plugin.xml il file di opzioni

(caricato ogni a chiamata, esegue quindi il suo contenuto a ogni chiamata.
-  attenzione: tutte le opzioni classiche di mes_options.php come la ridefinizione dell’img_pack non funzionano in questo file.

Il file plugin.xml

La presenza di questo file è indispensabile. Deve seguire una sintassi particolare.
I punti indispensabili: Cf spip.net-http://www.spip.net/fr_art...

<plugin>
        <nom>Il mio primo plugin</nom>
        <version>1.0</version>
        <prefix>demo</prefix>
</plugin>

File utilizzato nel plugin admin_themes & modelli di spip

<plugin>

   <nom>Admin themes</nom>
   <auteur>Jacques Jermer </auteur>
        <version> Novembre 2006</version>
   <etat>test</etat>
   <description>Permet à l'administrateur de selectionner l'apparence du site a l'aide des themes<br />
        Activer ou desactiver/choisir son squelette.<br />
        Il est preferable d'activer le plugin desactiver_cache<br />
        Ajoute un bouton dans le sous menu Configuration<br />
        Affiche une copie d'ecran par theme/squelette, si image presente<br />
        sinon une image par defaut                
        Pour la mise en place, lire le fichier alire.txt
        </description>
   <prefix>admin_themes</prefix>
        <options> <!-- fichier charge a chaque hit -->
                admin_themes_options.php
        </options>
        <pipeline>
                <nom>ajouter_boutons</nom>
                <action>ajouter_boutons</action>
                <inclure>admin_themes_boutons.php</inclure>
        </pipeline>
        <pipeline>
                <nom>ajouter_onglets</nom>
                <action>ajouter_onglets</action>
                <inclure>admin_themes_boutons.php</inclure>
        </pipeline>
   
</plugin>

Più dettagli - su doc.spip

inserire di un bottone

Nel file di creazione di un bottone avrete un codice simile a quest’ultimo:

$boutons_admin[{{’naviguer’}}]->sousmenu["gestion"]= new Bouton(
"../"._DIR_PLUGIN_GESTION."/img_pack/gestion_base-24.gif", // icone
_T("gestion:Gestion des tables") //titre
);

Bisogna decidere dove il nuovo bottone (sottomenù) apparirà. Nell’esempio dato, sarà aggiunto alle opzioni di «Redazione del Sito» grazie al valore `naviguer’ di $boutons_admin

Piccolo quadro riassuntivo:
-  $boutons_admin[’accueil’] => Pannello di controllo
-  $boutons_admin[’naviguer’] => Redazione del Sito
-  $boutons_admin[’forum’] => Forum
-  $boutons_admin[’auteurs’] => Autori
-  $boutons_admin[’statistiques_visites’] => Statistiche
-  $boutons_admin[’configuration’] => Configurazione
-  $boutons_admin[’aide_index’] => Aiuto
-  $boutons_admin[’visiter’] => Visita il sito

La creazione di bottoni o di unghie implica la creazione di una cartella /exec nella cartella del plugin, di un file php che contiene una funzione exec_prefix utilizzata dal plugin, nel nostro caso function exec_admin_themes(). In questa funzione sarà messo il codice d’esecuzione del nostro plugin, o almeno una parte del codice, e il resto in altri file che saranno inclusi o chiamati.

Inserire unghie

Per vedere un’unghia, basta premere su «configurazione»: si tratta ad esempio di ’contenuto del sito’, ’interattività ’, ’funzioni avanzate’. Nel nostro esempio, l’unghia crea una pagina nella parte privata del sito per pubblicare una scelta di temi. Un tema è composto almeno da due file:
-  plugin.xml
-  habillage.css

a questi possono aggiungersi
-  impression.css
-  immagini...

Da parte mia, aggiungo un file png, con lo stesso nome del tema, che mi permette di pubblicare un’etichetta che rappresenta il tema. Se questo file è assente, un’immagine di default è pubblicata.

Così si può facilitare la selezione di un tema.

Estratto del codice:

function admin_themes_ajouter_onglets($flux) {
 if($flux['args'] == 'configuration')
        return $flux;
       
 if($flux['args'] == 'plugin'){
                $flux['data']['themes']= new Bouton(
                "../"._DIR_PLUGIN_ADMIN_THEMES."/img_pack/
gestion-themes-24.gif", 'Th&egrave;mes',
                                                                                          generer_url_ecrire("admin_themes"));
        $flux['data']['squelette']= new Bouton(
                "../"._DIR_PLUGIN_ADMIN_THEMES."/img_pack/
gestion-squelette-24.gif", 'Squelette',
                                                                                          generer_url_ecrire("admin_squelette"));
 return $flux;

 
 }

La funzione riprende il ’prefix’ del plugin al quale si aggiunge _ajouter_onglets (il nome dell’azione dichiarata in plugin.xml). Il parametro $flux rappresenta il flusso (nel nostro caso vuoto) al quale si aggiungono le informazioni per la visualizzazione dell’unghia (bottone) come l’immagine, il titolo pubblicato ed il link a un file php di cui si dà soltanto il nome senza l’estensione. Questo file sta nella cartella /exec del plugin.
Se ad esempio volete aggiungere un’unghia a ’configurazione’, questa funzione aggiungerà nel flusso un’unghia con le sue proprietà (immagine, titolo, link).

Conclusione

Sperando che queste spiegazioni vi avranno ispirato il desiderio di passare alla creazione di plugins, vi raccomando, se esitate ancora, di osservare il codice dei plugins proposti.
Ad esempio, dopo essere rimasto nella parte privata del sito, mi sono ispirato al plugin jQuery per «pluginizzare» un codice javascript che permette di arrotondare gli angoli di una div, di un form e di incorporare un’immagine in fondo nella parte pubblica del sito. Il plugin admin_themes&squelettes è scaricabile qui
la sua documentazione

Retour en haut de la page

Tuoi commenti

Rispondere all'articolo

Chi sei?

Per mostrare qui il tuo avatar, registralo prima su gravatar.com (gratis e indolore). Non dimenticare di fornire il tuo indirizzo email.

Inserisci qui il tuo commento Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Aggiungi un documento

Retour en haut de la page

Ça discute par ici

  • (fr) Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • (fr) Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • (fr) Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.

  • (fr) Navigation AJAX

    31 janvier – 18 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin permet de modifier automatiquement une parties des liens internes de manière à ce qu’ils ne déclenchent pas un chargement complet de la page cible, mais un chargement en AJAX de certains éléments spécifiés à l’avance. Il permet aussi de (...)

  • (fr) Plugin Vidéo(s)

    23 novembre 2010 – 293 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Interface de gestion et modèle d’insertion des vidéos : Dailymotion Vimeo Youtube Modèle de la balise HTML5 video avec alternative flash html5media : Lecture HTML5/Flash pour tout navigateur des fichiers MP4/H264/Ogg/WebM/Mkv Support mobile, (...)