SPIP-Contrib

SPIP-Contrib

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

288 Plugins, 197 contribs sur SPIP-Zone, 311 visiteurs en ce moment

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

Creazione di un Plug-in

24 settembre 2007 – di mmmx – commentaire

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

Dernière modification de cette page le 18 novembre 2007

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) Conversion des brèves en articles

    19 mai 2011 – 41 commentaires

    Avec l’évolution de SPIP, les brèves deviennent un objet historique, dont le maintien s’avère parfois inadapté. Il peut donc se révéler utile de convertir les brèves en articles, c’est ce que fait ce plugin. La conversion des brèves en articles Ce (...)

  • (fr) ScolaSPIP 4

    19 janvier 2016 – 177 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • (fr) Mise à jour automatique des plugins

    5 octobre 2009 – 149 commentaires

    Une nouvelle lame du Couteau Suisse permet de visualiser les plugins nécessitant une mise à jour, tout comme SPIP lui-même ! Présentation Rendons à César ce qui est à César, voici un extrait de la présentation du Couteau Suisse pour sa lame « Mise (...)

  • (fr) ScolaSPIP 3

    21 mai 2012 – 443 commentaires

    Un plugin-squelette personnalisable pour sites Web d’établissements scolaires

  • (fr) Présentation : Organisation et décisions dans une optique autogérée et non-argentée

    11 mai – commentaires

    Cette présentation a été faite durant la rencontre SPIP à Toulouse en mai 2017. Elle propose des pistes de solutions pour avancer sur les chantiers compliqués et bloquants, notamment par la rédaction d’une charte/mode d’emploi pour la communauté et (...)