Creare una semplice estensione

Rispondi
Avatar utente
Micogian
Amministratore
Messaggi: 104
Iscritto il: 28/11/2014, 19:32

Creare una semplice estensione

Messaggio da Micogian »

Con il rilascio di phpbb 3.1.x e 3.2.x è sconsigliato modificare i file di sistema, sono così scomparte le modifiche che venivano denominate MOD.
Eventuali modifiche al sistema vanno fatte utilizzando le "estensioni".
Le "Estensioni" sono file che contengono codice che viene aggiunto ai file di sistema.
Tutte le estensioni devono trovarsi nella cartella ext/ che si trova nella cartella principale di phpBB e vanno archiviate utilizzando una struttura di cartelle del tipo "ext/nome-autore/nome-estensione".
Il "nome-autore" può essere il nome utente dell'autore o qualsiasi altro nome scelto per raggruppare le estensioni. Il nome dell'estensione è il nome dell'estensione. In questo tutorial useremo acme come nome del fornitore e demo come nome dell'estensione.
Entrambi i nomi dell'autore e dell'estensione devono iniziare con una lettera maiuscola o minuscola, seguita solo da lettere e numeri. Sottolineature, trattini e altri caratteri non sono permessi.


Compositore JSON

Ogni estensione richiede un file di metadati denominato composer.json per consentire a phpBB di identificare la propria estensione. Questo file contiene informazioni di base su un'estensione e le sue dipendenze. È scritto utilizzando il formato JSON e deve essere memorizzato nella cartella radice dell'estensione, ad esempio phpBB/ext/acme/demo/composer.json .

Le informazioni in composer.json verranno utilizzate da Extensions Manager nell'ACP. I dettagli dei metadati sono spiegati sotto l'esempio, ma per ora diamo un'occhiata al file completo:

Codice: Seleziona tutto

  {
     "nome" : "acme / demo" ,
     "type" : "phpbb-extension" ,
     "description" : "Acme Demo Extension per phpBB 3.2" ,
     "homepage" : "https://github.com/phpbb/phpbb-ext-acme-demo" ,
     "versione" : "0.1.0" ,
     "tempo" : "2013-11-05" ,
     "parole chiave" : [ "phpbb" , "estensione" , "acme" , "demo" ],
     "licenza" : "GPL-2.0" ,
     "autori" : [
         {
             "nome" : "Nickv" ,
             "email" : "nickvergessen @ localhost" ,
             "homepage" : "https://github.com/nickvergessen/" ,
             "ruolo" : "Lead Developer"
         }
     ],
     "richiede" : {
         "php" : "> = 5.4.0" ,
         "compositore / installatore" : "~ 1.0"
     },
     "require-dev" : {
         "phpbb / epv" : "dev-master"
     },
     "extra" : {
         "display-name" : "Acme Demo Extension" ,
         "soft-require" : {
             "phpbb / phpbb" : "~ 3.2"
         }
     }
 }
Nota

È importante ricordare che l'ultimo oggetto o oggetto in qualsiasi array JSON non deve contenere una virgola finale. Campo necess. descrizione name si Il nome del fornitore e il nome dell'estensione, separati da / , corrispondenti alla struttura della cartella. type si Il tipo di pacchetto Dovrebbe sempre essere phpbb-extension . description si Una breve descrizione della tua estensione potrebbe essere vuota (ma non saltata). homepage no Un URL valido. Si consiglia di utilizzare il collegamento al contributo nel database di personalizzazione o al repository dell'estensione (se si utilizza uno pubblico come GitHub). version si La versione della tua estensione. Questo dovrebbe seguire il formato di XYZ con un suffisso opzionale di -dev, -patch, -alpha, -beta o -RC. time no La data di rilascio della tua estensione. Deve essere nel formato AAAA-MM-GG o AAAA-MM-GG HH: MM: SS. keywords no Una serie di parole chiave correlate all'estensione. license si La licenza del pacchetto. Questo può essere una stringa o una serie di stringhe. In genere le estensioni devono essere concesse in licenza con la stessa licenza GPL-2.0 di phpBB. authors si Una serie di autori dell'estensione. Vedi gli autori per maggiori dettagli. require si Una serie di requisiti dell'estensione. Vedi richiedere maggiori dettagli. require-dev no Una serie di requisiti di sviluppo dell'estensione. Vedi require-dev per maggiori dettagli. extra si Una serie di dati extra arbitrari. Vedi extra per maggiori dettagli. si
autori
Potresti avere autori illimitati. Almeno un autore è altamente raccomandato. Campo necess. descrizione name si Il nome di un autore. email no Un indirizzo email dell'autore. homepage no Un URL che rimanda al sito web dell'autore. role no Il ruolo può essere utilizzato per specificare ciò che l'autore ha fatto per l'estensione (ad es. Sviluppatore, traduttore, sostenitore, ecc.)
richiede
Elenca le dipendenze richieste dall'estensione, ovvero la versione di PHP e le librerie di terze parti . campo descrizione php La versione di stabilità minima di PHP richiesta dall'estensione. phpBB 3.2 richiede PHP 5.4.0 o versioni successive, quindi il confronto tra le versioni è >= 5.4.0 . composer/installers Raccomandato da phpBB. Questo installerà le estensioni nella posizione corretta in phpBB quando installato tramite Composer. require-dev Nella sezione opzionale require-dev è possibile elencare le dipendenze dell'estensione che sono necessarie solo per lo sviluppo. Acme Demo utilizza lo strumento Extension Pre Validator del team phpBB Extensions per eseguire alcune convalide di base durante l'esecuzione dei test su Travis CI (vedere Tutorial: Test ). Dal momento che vogliamo sempre avere la versione più recente, abbiamo bisogno dev-master .
extra
Questa sezione può contenere praticamente qualsiasi dato arbitrario in base alle specifiche del compositore. Tuttavia, phpBB richiede due voci speciali in questo array per le estensioni: campo descrizione display-name Il nome della tua estensione, ad es. Estensione demo Demo. soft-require La versione con stabilità minima di phpBB richiesta dall'estensione. In questo caso abbiamo bisogno di qualsiasi versione 3.1, che viene eseguita anteponendo a ~ : "phpbb/phpbb": "~3.2" .
Guarda anche


Una spiegazione completa di tutti i campi dello schema JSON disponibili in un file composer.json può essere trovata qui: https://getcomposer.org/doc/04-schema.md

Ulteriori informazioni su come specificare i vincoli della versione del pacchetto possono essere trovate qui: https://getcomposer.org/doc/articles/ve ... onstraints

Finora, la nostra estensione non ha ancora funzionato. Passa alle sezioni successive per saperne di più su come scrivere un'estensione che faccia qualcosa di utile.
Rispondi