sabato 11 giugno 2011

Scrivere plugin per Joomla (I parte)

E' necessario sviluppare un plugin per Joomla ogni volta che si vuole cambiare il comportamento di Joomla al verificarsi di un determinato evento: i plugin di Joomla infatti, sono parti di codice che vengono eseguite in un dato momento del caricamento della pagina o ad una determinata azione dell'utente.
La possibilità di eseguire del codice a seconda che certe condizioni si verifichino o meno, ci da la possibilità di estendere le funzionalità di Joomla con semplicità ed eleganza rendendo il comportamento del nostro sito personalizzabile.

Tipologie di plugin in Joomla

Joomla possiede di default un certo numero di tipologie di plugin definite core.
Queste tipologie sono presenti nella cartella /plugins/ di ogni installazione Joomla e sono:

  1. authentication: per estendere l'autenticazione
  2. content: per effettuare controlli o inserire funzionalità nei contenuti
  3. editors: per realizzare editor
  4. editors-xtd: per le estensioni degli editor
  5. search: per estendere le funzionalità di ricerca
  6. system: per far eseguire codice in vari momenti del caricamento del framework
  7. user: per estendere le funzionalità degli utenti
  8. xmlrpc: per estendere l'interattività con altri servizi web (ad es: Desktop remoti)

Ogni tipologia di plugin serve quindi a svolgere delle funzionalità diverse: per permettere ciò Joomla mette a disposizione per ogni tipo di plugin una serie di eventi. Gli eventi non sono altro che diversi momenti (appunto eventi) che si susseguono nel caricamento del framework di Joomla. È possibile quindi eseguire del codice in ognuno degli eventi che Joomla mette a disposizione per una determinata tipologia di plugin.
Prima di vedere i tipi di eventi a disposizione, osserviamo che qualora se ne presentasse la necessità è possibile creare una nuova tipologia di plugin. Solitamente questo accade quando si sviluppa un componente che ha degli eventi personalizzati e che ha bisogno di effettuare certe operazioni all'esecuzione di questi eventi.

Eventi per ogni tipo di plugin

Authentication:
  1. onAuthenticate
Content:
  1. onPrepareContent
  2. onAfterDisplayTitle
  3. onBeforeDisplayContent
  4. onBeforeContentSave (aggiunto nella versione 1.5.4)
  5. onAfterContentSave (aggiunto nella versione 1.5.4)
Editors:
  1. onInit
  2. onGetContent
  3. onSetContent
  4. onSave
  5. onDisplay
  6. onGetInsertMethod
Editors XTD (Extended):
  1. onDisplay
Search:
  1. onSearch
  2. onSearchAreas
System:
  1. onAfterInitialise
  2. onAfterRoute
  3. onAfterDispatch
  4. onAfterRender
User:
  1. onLoginUser
  2. onLoginFailure
  3. onLogoutUser
  4. onLogoutFailure
  5. onBeforeStoreUser
  6. onAfterStoreUser
  7. onBeforeDeleteUser
  8. onAfterDeleteUser
XML-RPC:
  1. onGetWebServices

Nel prossimo articolo vedremo il codice di esempio di un plugin.