Utilizzare Joomla! per realizzare un sito internet risulta molto semplice ed agevole, non abbiamo bisogno di competenze specifiche e tantomeno di php. Spesso però ci troviamo difronte a delle necessità non risolvibili senza mettere mano al codice.
Una di queste necessità è la differenziazione dei layout degli articoli o delle categorie a seconda del tipo di contenuto che dobbiamo mostrare all’utente. Joomla! da la possibilità di creare tutti i layout che vogliamo anche se il sistema che utilizza non può definirsi “intuitivo”.
Per prima cosa bisogna capire come funziona l’override del template di joomla!.
Nell’immagine a sinistra, possiamo vedere la struttura delle cartelle di joomla! dove troviamo la cartella “templates” che contiene tutti i templates del sito, nel caso in esempio abbiamo un unico template contenuto nella cartella “template”. Oltre alle cartelle css e font notiamo la cartella “html” in cui troviamo le cartelle relative ai componenti e ai moduli del cms. Gli articoli e le categorie del nostro sito sono gestiti dal componente “com_content” il cui layout è contenuto nell’omonima cartella del template. La struttura delle cartelle è abbastanza intuitiva, troviamo infatti “article” che contiene i layout del singolo articolo e category che contiene quelli di categoria. Tralasciamo per il momento le altre cartelle, anche se il contetto di override è lo stesso.
Nella cartella article troviamo ogni singolo layout con relativo file PHP e XML. Nel primo file andiamo a specificare il codice HTML e PHP che renderizzeranno la pagina mentre nell’XML troviamo il nome del layout e tutti i parametri settabili dalla voce di menù.
In joomla! possiamo settare i layout sia nell’articolo che nella creazione di una nuova voce di menù che lincherà all’articolo desiderato. Quando andiamo a selezionare la tipologia della voce di menù nella sezione articoli oltre al “singolo articolo” troviamo anche il nuovo layout specificato nell””XML alla riga 3: “<layout title=”contatti-form” option=”com_content_article_view_default_option”>”
Come è possibile vedere dall’immagine in basso, sotto la voce “Singolo articolo” abbiamo “contatti-form” che è il nuovo layout che abbiamo creato e che verrà assegnato all””articolo lincato a questa voce di menù. Lo stesso ragionamento vale anche per tutti gli altri componenti di joomla.
In quest’altra immagine possiamo vedere il parametro “Layout alternativo” dove è possibile selezionere il layout dell’articolo. Questo layout verrà applicato alla pagina solo se l’articolo in questione non è lincato direttamente da una voce di menù. Questo perchè joomla dà priorità alla tipologia di articolo che abbiamo selezionato nella voce di menù e quindi ignorerà il parametro presente nella configurazione dell’articolo. Inoltre nella select non verranno visualizzati i layout che, nella cartella del template, oltre al file PHP, hanno un omonimo file con estensione XML.
Complimenti per l’articolo, semplice e chiarissimo.
Mi ha risolto un problema in cui ero incappato e in cui non avevo trovato soluzione nemmeno leggendo e scrivendo sul forum di joomla: non capivo perché non veniva impostato il mio layout per alcune pagine come la home.
Leggendo mi è balzata all’occhio la soluzione in tutta la sua semplicità! per le pagine linkate dal menu occorre creare per il layout una nova voce nel riquadro di scelta “Seleziona un tipo di voce di menu”.
Questo aspetto non mi era chiaro nemmeno rileggendo il libro di joomla (una nota spersa da qualche parte??).
Nel forum c’era chi proponeva di modificare il file view.html.php !
Mi rimane solo da capire come strutturare il file xml del layout. Consigli?
E impostare un layout a tutti gli articoli di una categoria senza impostarlo all’interno di ogni relativo dettaglio?