Creazione di un plugin per joomla 1.5

Da Il wiki di Joomla.it.

Originale http://docs.joomla.org/Tutorial:Creating_a_Plugin_for_Joomla_1.5 tradotto da r-evolving

Indice

Come Creare un Proprio Plugin

Questa miniguida fornisce gli elementi base di cui hai bisogno per sviluppare un tuo plugin. Molti plugin sono composti da un unico file di codice ma per essere installati devono comunque essere associati ad un file di installazione che possa essere processato dall'installer di Joomla!.

Creare il File d' Installazione

Come per tutte le estensioni di Joomla!, i plugin vengono facilmente installati come file .zip (sono supportati anche i formati .tar e .gz) ma nel pacchetto deve essere incluso un file XML correttamente formattato. Come esempio ecco l'XML del file d' installazione del searchbot per le categorie.

<?xml version="1.0" encoding="iso-8859-1"?>
<install version="1.5" type="plugin" group="search">
<name>Categories searchbot</name>
<author>Joomla! Project</author>
<creationDate>November 2005</creationDate>
<copyright>(C) 2005 Open Source Matters. All rights reserved.</copyright>
<license>GNU/GPL</license>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<version>1.1</version>
<description>Allows searching of Categories information</description>
<files>
<filename plugin="categories.searchbot">categories.searchbot.php</filename>
</files>
<params>
<param name="search_limit" type="text" size="5" default="50" label="Search Limit" description="Number of search items to return"/>
</params>
</install>

Come puoi vedere il criterio è analogo a quello del file di installazione di Joomla!. Devi solo cercare la voce group="xxx" nel tag <install> e l'informazione estesa nel tag <filename>. Questa informazione indica a Joomla! in quale cartella copiare il file e a quale gruppo debba essere aggiunto il plugin.

Creare il Plugin

Joomla! 1.5 introduce un nuovo metodo di scrivere plugin, più orientato agli oggetti. Tuttavia il vecchio metodo è ancora supportato per assicurare la retro-compatibilità (guarda il paragrafo successivo).

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
// Import library dependencies
jimport('joomla.event.plugin');
 
class plg<PluginGroup><PluginName> extends JPlugin
{
/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for
* plugins because func_get_args ( void ) returns a copy of all passed arguments
* NOT references. This causes problems with cross-referencing necessary for the
* observer design pattern.
*/

function plg<PluginGroup><PluginName>( &$subject )
{
parent::__construct( $subject );
 
// load plugin parameters
$this->_plugin = > JPluginHelper::getPlugin( '<GroupName>', '<PluginName>' );
$this->_params = new JParameter( $this->_plugin->params );
}
 
/**
* Plugin method with the same name as the event will be called automatically.
*/

function <EventName>()
{
global $mainframe;
 
// Plugin code goes here.
 
return true;
}
 
}


Creare il Plugin (Legacy Mode)

Questa sezione descrive il metodo legacy utilizzato per creare plugin prima di Joomla! 1.5. Alcuni plugin core di Joomla! potrebbero ancora usare questo metodo ma saranno progressivamente riscritti col passare del tempo. Questo metodo è comunque ancora supportato per assicurare la retro-compatibilità.

Il codice che deve essere eseguito quando si verifica un evento, è scritto come una funzione PHP. Prima della definizione della funzione, fai una chiamata al metodo registerEvent() in modo che l'event system di Joomla! associ la tua funzione con l'evento appropriato.

Per esempio, dai uno sguardo a questo codice:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
 
$mainframe->registerEvent( '<EventName>', '<FunctionName>' );
 
function <FunctionName>( <ParameterList> ) {
 
//Plugin code goes here
 
}

Con la funzione $mainframe→registerEvent() il tuo plugin viene registrato nell'event system di Joomla!. Questo vuol dire che quando l'evento '<EventName>' in seguito si verificherà, la funzione '<FunctionName>' verrà invocata.

Ora puoi scrivere il codice della funzione del tuo plugin come vuoi. Se vuoi usare parametri, non c'è problema, usali come fai di solito. Puoi registrate tanti eventi e funzioni di plugin quanti ne vorrai insieme in un unico file, come preferisci. Quando avrai finito, il tuo plugin sarà pronto all'uso.

Usare i Plugin nel codice

Adesso che hai creato il tuo plugin, probabilmente vorrai richiamarlo nel codice. O forse no; il core di Joomla! ha un numero tale di eventi già definiti che potresti voler registrarci il tuo plug-in. In qual caso non hai bisogno di fare come indicato di seguito.

Se invece vuoi scatenare un evento, usa un codice così:

$results = $mainframe->triggerEvent( '<EventName>', <ParameterArray> );

È importante notare che i parametri devono stare in un array. La funzione stessa del plugin prenderà i parametri come singoli valori. Il valore di risposta consisterà in un array di valori di risposta dai differenti plugin (così può contenere anche array multilivello).

Conclusioni

La struttura di plugin per Joomla! 1.5 è molto flessibile e potente. I plugin non sono solo impiegati per gestire eventi scatenati dalle applicazioni ed estensioni core ma possono anche essere utilizzati per rendere le estensioni di terze parti flessibili e potenti.


Per chiarimenti sulla traduzione, questo è il post attivo nel forum

Strumenti personali
centro traduzioni