Skip to main content

Mastering Joomla 1.5 Extension and Framework development – 7

Nel settimo capitolo del libro Mastering Joomla 1.5 Extension and Framework development vediamo come progettare e costruire un plugin.

Vediamo i punti più interessanti.

Eventi

Se la struttura di base di un plugin è molto semplice – solitamente un plugin è costituito da un solo file PHP, più un file XML con i metadati – la sua complessità sta invece nel capire come e quando usarlo.

Esistono una serie di eventi che vengono attivati da parte del framework o dei componenti core in diversi punti dell’elaborazione. E’ inoltre possibile definire eventi personalizzati all’interno dei nostri componenti.

I plugin reagiscono a questi eventi effettuando determinate operazioni che possono influire sul risultato della pagina (ad esempio sostituire una specifica stringa con una immagine) o effettuare operazioni aggiuntive (ad esempio inviare una e-mail o scrivere in un log).

Gli eventi vengono lanciati tramite la classe JDispatcher. Un esempio molto semplice da usare in un componente:

$dispatcher =& JDispatcher::getInstance();
$event =& 'onSaveItem';
$data = array( $item );
$result = $dispatcher->trigger($event,$data);

Come si vede dall’esempio, è possibile passare dei parametri al plugin a patto che siano sempre in forma di array.

$result sarà un array che contiene i risultati dell’elaborazione da parte di tutti i plugins che rispondono all’evento in questione.

Struttura del codice

E’ possibile definire un plugin come una serie di funzioni o come una classe. La seconda modalità è preferita: i metodi della classe corrisponderanno esattamente agli eventi che vogliamo gestire.

Gruppi di plugin

I plugin sono catalogati in diversi gruppi in modo da poter di volta in volta caricare solo il gruppo che ci interessa. E’ possibile creare dei gruppi aggiuntivi per i nostri plugins personalizzati.

I gruppi preesistenti sono:

  • authentication : per gestire diversi possibili metodi di autenticazione al nostro sito (oltre a quello normale, sono già presenti OpenID, LDAP e GMail)
  • content : per influenzare il testo degli articoli che vengono presentati (la maggior parte dei plugin sono qui)
  • editors : gruppo dedicato agli editor wysiwyg, sicuramente i più complicati da analizzare e replicare
  • editors-xtd : plugin che  creano bottoni e altre estensioni per gli editor
  • search : plugin che gestiscono le operazioni di ricerca (ad esempio dovremmo creare qui un plugin che ci permette di aggiungere i dati del nostro componente ai risultati della ricerca nel sito)
  • system : plugin di sistema, in ascolto di eventi chiamati direttamente dal framework
  • user : plugin che hanno a che fare con la gestione degli utenti (creazione, modifica, cancellazione) e che quindi potrebbero permetterci, ad esempio, di aggiungere una tabella con dati aggiuntivi per i nostri utenti
  • xml-rpc : gestione dei web services, che verrà affrontata più avanti nel libro

Parametri

Come per i moduli e i componenti, è possibile definire nel file XML del plugin dei parametri che poi potranno essere modificati e salvati da backend, e utilizzati nel nostro codice.