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:

  1. $modules;
  2. $params;
  3. $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 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: 
<jdoc:include type="modules" name="user1" style="NomeStile" /> <div> <h3><!--Titolo Modulo--></h3> <div class="blue"> <!--Contenuti--> </div> </div>

<jdoc:include /> Statement:
<jdoc:include type="modules" name="user1" style="NomeStile" background="green" /> 
<div> <h3><!--Titolo Modulo--></h3> 
<div class="green"> <!--Contenuti--> </div> </div>
<jdoc:include /> Statement:
<jdoc:include type="modules" name="user1" style="NomeStile" headerLevel="1" background="yellow" /> 
<div> <h1><!--Titolo Modulo--></h1> <div class="yellow"> <!--Contenuti--> </div> </div>

Analizzando bene questo semplice codice, possiamo vedere la versatilità dei moduli e di come è possibile ottenere una personalizzazione estrema nel nostro sito.

© www.extrowebsite.com - Grafica, layout, articoli e guide sono di esclusiva proprietà del webmaster - Tutti i diritti riservati