I plugin sono estensioni che si basano su un particolare design pattern, chiamato Observer.
In pratica essi restano inattivi fino a che Joomla lancia un particolare evento. Ogni plugin si registra per un determinato evento e quando esso avviene, il plugin viene eseguito.
Vediamo una lista di eventi predefiniti in Joomla
System
Durante l'esecuzione di ogni richiesta, vengono generati
- onAfterInitialize: chiamato dopo che il framework è stato caricato e l'applicazione è stata inizializzata.
- onAfterRoute: dopo il caricamento e l'inizializzazione, viene chiamato questo evento quando è stato effettuato il routing, che consiste nel determinare quale componente si occupa di gestire la richiesta.
- onAfterDispatch: chiamato dopo che il componente determinato con il routing ha preso il controllo.
- onAfterRender: chiamato quando l'output della pagina è pronto per essere inviato.
XML-RPC
XML-RPC è un protocollo usato per eseguire funzioni su server remoti, e visualizzare il risultato di tale operazione.
- onGetWebServices: usato da funzioni XML-RPC, usato per determinare le funzioni utilizzabili.
Search
Questi eventi sono usati per estendere le capacità del componente di ricerca di Joomla.
- onSearch: chiamato quando viene lanciata una ricerca.
- onSearchAreas: chiamato quando il componente usato per la ricerca richiede la lista delle aree del sito in cui cercare.
Authentication
- onAuthenticate: chiamato quando un utente esegue il login, usato per implementare metodi di autenticazione esterni.
User
Questi eventi consentono di estendere e personalizzare la gestione degli utenti.
- onLoginUser: chiamato subito dopo che l'utente ha inserito i dati di login e premuto il pulsante per entrare.
- onLoginFailure: chiamato quando il login fallisce.
- onLogoutUser: chiamato quando l'utente preme il pulsante logout.
- onBeforeStoreUser: chiamato appena prima che un utente è memorizzato nel database, ci permette di modificare i dati dell'utente prima di memorizzarli.
- onAfterStoreUser: chiamato dopo che un utente è memorizzato nel database.
- onBeforeDeleteUser: chiamato appena prima che un utente è stato cancellato dal sistema, utile per aggiornare tabelle che usano i dati degli utenti.
- onAfterDeleteUser: chiamato dopo che un utente è stato cancellato dal sistema.
Editor-xtd
Sotto l'editor di testo di Joomla possiamo notare dei pulsanti "Image", "Pagebreak", "Readmore". Questi aggiungono funzionalità inserendo delle stringhe di testo all'interno della form in cui modifichiamo il contenuto.
- onCustomEditorButton: usato per aggiungere pulsanti nello spazio sottostante l'editor di testo (insieme ad "Image", "Pagebreak", "Readmore").
Editor
Questi eventi sono generati per l'integrazione di editor esterni, come TinyMCE, JCE ed altri. Non di comune utilità, dunque.
- onInit: chiamato quando si inizializza l'editor
- onDisplay: chiamato quando l'editor è pronto per essere visualizzato, setta i parametri della visualizzazione della form di inserimento del testo
- onGetContent: chiamato quando è richiesto il contenuto del testo scritto nell'editor
- onSetContent: usato per popolare l'editor con del testo prima di visualizzarlo
- onSave: chiamato quando si salva il contenuto dell'editor
- onGetInsertMethod: usato per inserire il testo nella posizione corrente del cursore
Content
Eventi generati per la modifica, la preparazione e la visualizzazione dei contenuti
- onPrepareContent:usato per modificare il testo del contenuto
- onAfterDisplayTitle: inserisce elementi subito dopo il titolo del contenuto
- onBeforeDisplayContent: usato per inserire elementi dopo il titolo, appena prima del contenuto della pagina
- onAfterDisplayContent: usato per inserire elementi subito dopo il contenuto della pagina
- onBeforeContentSave: chiamato appena prima che il contenuto sia salvato
- onAfterContentSave: chiamato appena dopo che il contenuto viene salvato
Aggiungere nuovi eventi
Ovviamente è possibile introdurre nuovi eventi per gestire operazioni personalizzate, creando un componente che ad un certo punto del suo workflow esegue una chiamata a
$mainframe->triggerEvent('onMioEvento', $arguments);
e creando un plugin che abbia la funzione onMioEvento
class plgContentMioPlugin extends JPlugin {
function onMioEvento(&$params) {
//contenuto della funzione
}
}
- Post correlati:
