Personalizzazione module chrome di Joomla!
Per definire la personalizzazione del Module Chrome nel proprio template attivo, è necessario creare un file chiamato modules.php; tale file deve trovarsi all' interno della cartella chiamata "html". Il suo percorso completo, a beneficio di una maggiore chiarezza, è:
Root_Joomla/templates/Template_Attivo/html/modules.php
In tale file deve essere definita una funzione dal nome modChrome_NomeStile dove NomeStile verrà sostituito dal nome vero e proprio del modulo personalizzato. Questa funzione necessita di tre argomenti:
- $modules;
- $params;
- $attribs
come mostrato nel frammento di codice riportato di seguito:
<?php
function modChrome_NomeStile( $module, &$params, &$attribs )
{
/* Output del modulo */
}
?>
All' interno della funzione "modChrome" è possibile fare uso di una qualsiasi proprietà disponibile per i Moduli (per esempio i campi della tabella jos_modules del database di Joomla! sul server), ma è necessario, se non obbligatorio, inserire determinati parametri, quali:
- $module-> content;
- $module-> showtitle;
- $module-> title
$module-> content e $module -> title restituiranno rispettivamente il contenuto principale del modulo e il titolo del modulo stesso.
$module-> showtitle, invece, è una variabile Booleana, vero falso. Sarà soddisfatta la condizione quando il titolo sarà mostrato; falsa, il contrario.
La funzione "modChrome" è una normalissima funzione PHP; è possibile inserire qualsiasi procedura regolare di codice. Un esempio potrebbe essere quello di utilizzare una istruzione "if" per controllare il valore di "$module->showtitle" per vedere se deve essere visualizzato o meno:
<?php
if ($module->showtitle)
{
echo '<h2>' .$module->title .'</h2>';}
?>
Ai parametri del Modulo si accede usando l' oggetto $params.
Per esempio, è possibile assegnare un suffisso di classe per il modulo, direttamente nel backend di Joomla!; tale suffisso viene memorizzato nei parametri per il modulo come "moduleclass_sfx".
Per creare un elemento <div> con una classe determinata dal suffisso del modulo, si deve scrivere:
<div class="<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<!-- contenuti -->
</div>
Attributi personalizzati per il module chrome
E' anche possibile passare altri tipi di attributi nella funzione PHP del Module Chrome utilizzando lo stesso statement <jdoc:include />. Tali ulteriori attributi possono comprendere qualsiasi codice per la personalizzazione del modulo, i quali sono memorizzati nell' array "$attribs". Si prenda come esempio la funzione di seguito riportata:
<?php
function modChrome_NomeStile( $module, &$params, &$attribs ) {
if (isset( $attribs['headerLevel'] ))
{
$headerLevel = $attribs['headerLevel'];
} else {
$headerLevel = 3;
}
if (isset( $attribs['background'] ))
{
$background = $attribs['background'];
} else {
$background = 'blue';
}
echo '<div class="' .$params->get( 'moduleclass_sfx' ) .'" >';
if ($module->showtitle)
{
echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>';
}
echo '<div class="' .$background .'">';
echo $module->content;
echo '</div>';
echo '</div>';
}
?>
Ci sarebbe da impostare, stando alla funzione appena riportata, il valore per lo sfondo e per il font-size del titolo (headerLevel). Se questi valori non sono impostati, gli attributi predefiniti saranno "blu" e "3", rispettivamente.
Passare gli attributi al Module Chrome attraverso lo statement <jdoc:include />
<jdoc:include /> Statement | Output |
|---|---|
<jdoc:include type="modules" name="user1" style="NomeStile" /> |
<div> |
<jdoc:include type="modules" name="user1" style="NomeStile" background="green" /> |
<div> |
<jdoc:include type="modules" name="user1" style="NomeStile" headerLevel="1" background="yellow" /> |
<div> |
Analizzando bene questo semplice codice, possiamo vedere la versatilità dei moduli e di come è possibile ottenere una personalizzazione estrema nel nostro sito.
| < Prec. | Succ. > |
|---|

