Guida per creare estensioni

Amore a prima vista: come App per gli smartphone
Rispondi
brunino
Post Master
Post Master
Messaggi: 57
Iscritto il: ottobre 20, 2014, 12:52 pm
Contatta:

Guida per creare estensioni

Messaggio da brunino »

Questa guida l'ho creata su richiesta di un altro forum, ma ve la rilascio anche a voi... vi potesse mai essere utile...

La base per sviluppare un'estensione é scegliere i nomi delle directory che la ospiteranno. esempio ext/staffit/toptentopics
All'interno di quella cartella vanno tutti i file dell'estensione.
Il primo file da creare obbligatoriamente é il composer.json va messo nella directory della nostra estensione e va compilato come segue:

Codice: Seleziona tutto

 {
    "name": "staffit/toptentopics",
    "type": "phpbb-extension",
    "description": "Aggiunge un box nell'indice con ultimi topic, topic più visti e ultimi post",
    "homepage": "https://brunino.altervista.org",
    "version": "0.1.0-a1",
    "time": "2014-11-10",
    "license": "GPL-2.0",
    "authors": [
        {
            "name": "brunino",
            "email": "[email protected]",
            "homepage": "http://www.brunino.altervista.org",
            "role": "Developer"
        },
 {
            "name": "Carlo",
            "email": "[email protected]",
            "homepage": "http://www.phpbbitalia.net",
            "role": "Helper"
        }, 
        {
            "name": "Micogian",
            "email": "[email protected]",
            "homepage": "http://www.actafungorum.org/actaforum/",
            "role": "Previous Developer"
        }
    ],
    "require": {
        "php": ">=5.3"
    },
    "extra": {
        "display-name": "Top Ten Topics",
        "soft-require": {
             "phpbb/phpbb": "3.1.*@dev"
        },
        "version-check": {
            "host": "brunino.altervista.org",
            "directory": "/version/",
            "filename": "toptentopics.json"
        }
    }
}

A questo punto inizia lo sviluppo vero e proprio.

MODIFICHE AI TEMPLATE
con le estensioni non si può più andare a pescare un punto dei ttemplate e aggiungere/rimuovere/cambiare una parte del codice bensì bisogna usare gli eventi proposti da phpbb e che trovate qui: https://wiki.phpbb.com/Event_List#Template_Events
[se non trovate un evento che vi serve dovete richiederlo e sperare che lo inseriscano nella prossima versione phpbb]
gli eventi servono per aggiungere codice ai template.
per eseguirne uno è sufficiente creare un file directory_tua_estensioe/styles/all/template/event/nome_evento.html e all'interno mettere il codice da aggiungere.

MODIFICARE PHP
Le problematiche nascono se si vuol modificare php.
Anche in questo caso c'é una lista di eventi utilizzabili. Questa volta bisogna creare alcuni file in base a cosa si deve fare.
un file necessario é il config/services.yml
Qui bisogna specificare le variabili che ci serviranno nel php (es $db per le query sql, $template per passare dati da php a template).
Esempio di services.yml

Codice: Seleziona tutto

 services:
    phpbbitalia.topten.listener:
        class: staffit\toptentopics\event\listener
        arguments:
            - @dbal.conn
            - @template
            - @auth
            - @user
            - %core.root_path%
            - %core.php_ext%
        tags:
            - { name: event.listener }

Gli eventi php li gestiamo nel file event/listener.php vediamo come:

Codice: Seleziona tutto

 <?php
namespace staffit\toptentopics\event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class listener implements
EventSubscriberInterface{
protected $db;
//protected $table_prefix;
//protected $request;
//protected $search_engines;
protected $template;
protected $auth;
protected $user;
protected $root_path;
protected $phpEx;

//costruttore
public function __construct(\phpbb\db\driver\driver_interface $db, \phpbb\template\template $template, \phpbb\auth\auth $auth, \phpbb\user $user, $root_path, $phpEx) 
{
   $this->db = $db;
   $this->template = $template; 
   $this->auth = $auth;
   $this->user = $user;
   $this->root_path = $root_path;
   $this->phpEx   = $phpEx ;
}

static public function getSubscribedEvents()	{		return array(			'core.user_setup'						=> 'mia_funzione',					);	}	
public function mia_funzione($event)	{		
//codice da eseguire nell'evento
//return $event
}
}

Nella prima parte definiamo le variabili che già abbiamo richiesto nel services così
protected $db;
poi dobbiamo creare il costruttore sempre per definire quelle variabili.
tutte le variabili infatti in phpbb3.1 sono passate da $db->sql_query a $this->db->sql_query e così anche per user e template ecc...
E poi definiamo gli eventi che vogliamo usare e cosa far eseguire per ognuno di essi. Esattamente definiamo l'evento e gli associamo una nuova funzione che andiamo a creare sotto. La funzione avrà come unico parametro $event nel quale verrà passato qualcosa in base all'evento come scritto nella lista.

Questa guida non é completa... per vedere la guida completa (in sviluppo ma quasi del tutto finita) vai qui

Spero vi sia utile.
Qualsiasi domanda é ben accetta.
Ultima modifica di brunino il novembre 24, 2014, 9:13 pm, modificato 19 volte in totale.
Avatar utente
Darkman
Amministratore
Amministratore
Messaggi: 1204
Iscritto il: marzo 28, 2009, 11:04 pm

Messaggio da Darkman »

Ti ringrazio per l'articolo : davvero un grosso regalo per questo minuscolo forum :-)

Inviato dal mio ME301T utilizzando Tapatalk
Rispondi