Joomla è oramai uno dei CMS (Content Management System) più affermati e utilizzati, sia per la sua facilità d’utilizzo sia per la sua modularità, che permette di installare estensioni con pochi passi.

Ma Joomla è anche molto apprezzato dagli addetti ai lavori, da chi ogni giorno si trova a configurare e integrare con la struttura del CMS elementi software personalmente sviluppati: nell’articolo presente a questo indirizzo è possibile leggere una guida che spiega chiaramente la distinzioni tra quelli che rappresentano gli elementi principali della struttura di questo CMS: i componenti, i mambots e i moduli.

Qui trattiamo esclusivamente l’implementazione e lo sviluppo dei moduli: questi possono essere visti come delle entità ausiliarie rispetto ai componenti, entità che vengono visualizzate esclusivamente all’interno delle sezioni definite nel template ( e qui richiamamibili attraverso la funzione MosLoadModules() ).

Lo sviluppo di un modulo richiede almeno la creazione di due file:

  • il file mod_nomemodulo.php rappresenta il file PHP che contiente il codice principale del modulo;
  • il file mod_nomemodulo.xml che rappresenta il file di installazione del modulo: qui sono contenute tutte le informazioni necessarie all’installazione, come i parametri, le immagini, e il nome di questo file, come per il precedente deve avere un nome preciso perchè rappresenta l’ “oggetto” che stiamo creando.

Ad esempio, supponiamo di implementare un modulo che estenda un componente di nostra creazione, in modo che il modulo recuperi e permetta la visualizzazione di alcuni record del nostro componente secondo parametri che possono essere configurati attraverso il modulo stesso (ordine, tipologia di lemento, ecc..). Allora potremmo chiamare i file del nostro modulo in questo modo:

  • mod_list_myelements.php
  • mod_list_myelements.xml


Una volta creati questi file è sufficiente comprimerli in un pacchetto .ZIP o TGZ e installarli attreverso l’installer-moduli di Joomla (Installazioni—>Moduli) raggiungibile dal pannello di amministrazione.

File di installazione del modulo

Vediamo un esempio commentato di file di installazione del modulo, nel nostro caso il file mod_list_myelements.xml.

/**INTESTAZIONE FILE XML**/
<?xml version=”1.0″ encoding=”iso-8859-1″?>
<mosinstall type=”module” version=”1.0.0″>
/**FINE INTESTAZIONE FILE XML**/

/**DATI DELL’AUTORE DEL MODULO E DESCRIZIONE**/
<name>List Elements</name>
<author>Marco Lecce</author>
<creationDate>January 2008</creationDate>
<copyright>(C) 2008 Marco Lecce. All rights reserved.</copyright>
<license></license>
<authorEmail>yourmail@
yourmail.com</authorEmail>
<authorUrl>www.yoursite.com</authorUrl>
<version>1.0.0</version>
<description>Questo modulo elenca gli elementi in base a parametri di configurazione.</description>
/**FINE DATI DELL’AUTORE DEL MODULO E DESCRIZIONE**/

/**
ALL’INTERNO DEL TAG files VANNO INSERITI TUTTI I FILE CHE COMPONGONO IL MODULO: AD ESEMPIO SE IL MODULO UTILIZZA IMMAGINI PARTICOLARI, POSSIAMO DICHIARARLE QUI
**/

<files>
<filename module=”mod_list_myelements”>mod_list_myelements.php</filename>
(ESEMPIO DI SECONDO FILE<filename module=”mod_list_myelements”>image.jpg</filename>)

</files>

/**DICHIARAZIONE PARAMETRI MODULO: QUESTA PARTE E’ FACOLTATIVA; QUI DEFINIAMO TRE PARAMETRI**/
<params>
/**
CONFIGURAZIONE PRIMO PARAMETRO:
“count” -> nome nel database del campo del componente che vogliamo controllare con il modulo
“type” -> il tipo del parametro sarà text, cioè il parametro è una casella di testo
“default” -> valore di default
**/
<param name=”count” type=”text” default=”20″ label=”Contatore” description=”Il numero di elementi (default 20)” />
/**
CONFIGURAZIONE SECONDO PARAMETRO:
“order” -> nome nel database del campo del componente che vogliamo controllare con il modulo
“type” -> il tipo del parametro sarà list, cioè il parametro è una select da cui potremmo scegliere tre opzioni
“default” -> valore di default
**/
<param name=”order” type=”list” default=”order_list” label=”Ordinamento” description=”Stabilisce la modalità di ordinamento delle news”>
<option value=”v1″>Valore1</option>
<option value=”v2″>Valore2</option>
<option value=”v3″>Valore3</option>
</param>
/**
CONFIGURAZIONE TERZO PARAMETRO:
“type” -> nome nel database del campo del componente che vogliamo controllare con il modulo
“type” -> il tipo del parametro sarà list, cioè il parametro è un radio box da cui potremmo scegliere due opzioni
“default” -> valore di default
**/
<param name=”type” type=”radio” default=”ASC” label=”Verso dell’ordinamento” description=”Stabilisce il verso dell’ordinamento “>
<option value=”ASC”>Crescente</option>
<option value=”DESC”>Decrescente</option>
</param>
</params>
/**FINE DICHIARAZIONE PARAMETRI MODULO**/
</mosinstall>

I commenti dovrebbero essere piuttosto chiari: una volta installato il componente dal pannello di amministrazione, andando nella sezione dedicata ai moduli, e cliccando sul nostro appena installato, sarà possibile configurare il comportamento del modulo nel frontend, attraverso i parametri che abbiamo dichiarato.

Codice del modulo

Questo è il file principale, che contiene cioè tutto il codice del modulo. Ora, in questo file, in realtà, noi possiamo scrivere tutto il codice PHP che ci serve, perciò più che fare un esempio di come scrivere questo tipo di file, daremo le indicazioni su come è possibile utilizzare alcune direttive che chiariscono le potenzialità dei moduli.

  • defined( ‘_VALID_MOS’ ) or die( ‘Restricted access’ );
    E’ importantissimo inserire questa riga di codice come prima nel file del modulo: in questo modo evitiamo l’accesso diretto al file, cioè impediamo l’accesso al file dall’esterno di Joomla. Dimenticarsi questa riga non compromette il funzionamento del modulo, ma apre falle nella sicurezza del portale.
  • $ordering = $param->get(’order’);
    Con questa riga di codice PHP non facciamo altro che assegnare alla variabile $ordering il valore del parametro ‘order‘ che abbiamo scelto nel backend, cioè dall’amministrazione del modulo: nel nostro caso, ‘order‘ l’abbiamo creato come select con tre opzioni, e quindi dall’amministrazione del modulo possiamo assegnare uno di questi tre valori al parametro, che possiamo recuperare nel frontend attraverso appunto questa riga di codice.

Ora dovrebbe essere chiaro come sia possibile intergrare funzionalità diverse a qualsiasi elemento della struttura di Joomla attraverso i moduli: la vera forza di questo CMS è proprio la versatilità che caratterizza non solo l’utilizzo, ma anche lo sviluppo di applicazioni basate su questo Content Managment System.

Vota Articolo: