sabato 17 novembre 2012

Posizione moduli Joomla 2.5

Per definire una nuova posizione per i moduli di un sito web sviluppato con Joomla 2.5 dobbiamo eseguire le seguenti operazioni:

Inserire posizione nel file di definizione del template

Nel file xml di definizione del template, solitamente templateDetails.xml, sono dichiarate le posizioni modulo:

   <positions>
      <position>debug</position>
      <position>position-0</position>
      <position>position-1</position>
      <position>position-2</position>
      <position>...</position>
      <position>position-14</position>
   </positions>

I nomi delle posizioni non sono fissi ma possono variare da template a template. Inseriamo semplicemente un nuovo nome per la nostra posizione.

<position>myposition</position>


Inserire il codice php per la nuova posizione

Aprire il file sorgente del template selezionato (di solito index.php). Aggiungere queste righe nella posizione desiderata:

  <?php if ((bool)$this->countModules('myposition')) : ?>
    <div id="mydiv">
      <jdoc:include type="modules" name="myposition" style="xhtml" />    </div>
  <?php endif; ?>

Consiglio sempre di mettere la verifica che ci sia almeno un modulo pubblicato nella nostra posizione. In questo modo evitiamo di inserire un div vuoto se non abbiamo moduli in quella posizione.
La direttiva jdoc:include serve a definire il segnaposto che il motore di rendering di Joomla andrà a sostituire con i moduli associati alla posizione specifica (myposition in questo caso). Il parametro style serve ad indicare le varianti al codice html di generazione del modulo. Esso può assumere i seguenti valori standard: none, table, horz, xhtml, rounded e outline, definiti in templates/system/html/modules.php, oppure valori arbitrari definiti con un override nel file html/modules.php specifico del template.

Definiamo lo stile del modulo

Modifichiamo il foglio di stile associato al template, solitamente /templates/nome del template/css/position.css, inserendo le regole necessarie:

#mydiv {
  color: #000000;
  width: 90px;
}

Non resta che creare un nuovo modulo dal backend di Joomla ed assegnarlo alla posizione appena creata.