La direttiva "jdoc:include" nei template per Joomla
In Joomla, il nostro sistema CMS preferito, il template è il modello grafico da applicare al nostro sito. Tale modello è indipendente dai contenuti inseriti e dalle estensioni installate: si applica come un “vestito” alla pagina risultante dalle elaborazioni di Joomla.
Nell’installazione base sono già inclusi tre template già pronti all’uso; esistono inoltre numerosi altri template disponibili su internet, sia gratuiti che a pagamento. Se però siamo esigenti e/o vogliamo avere qualcosa di veramente personalizzato, possiamo anche crearci un template personalizzato.
In questo articolo non presenteremo un vero e proprio tutorial per la creazione di un template personalizzato: analizzeremo invece uno degli elementi fondamentali di un template Joomla: la direttiva jdoc:include.
HTML e PHP
Un template Joomla è per la maggior parte realizzato con le stesse tecnologie usate per qualsiasi altra pagina web. Ciò che differenzia un template per Joomla da qualsiasi altro template è la presenza di istruzioni aggiuntive e/o segnaposti che dicono al sistema dove e come inserire i contenuti.
Per cui, se aprite un template Joomla vedrete perlopiù una normale pagina HTML, con però alcuni elementi estranei. Il più frequente è proprio l’elemento jdoc:include. Vediamo alcuni esempi:
<jdoc:include type="head" />
Seguendo una sintassi molto simile all’HTML, questa direttiva indica a Joomla di “piazzare” in quel punto un elemento dinamico del CMS. Nell’esempio mostrato, si tratta delle informazioni che vanno nell’head, quindi la scelta dei CSS, degli script e degli elementi meta.
Tipi di elementi
Altri valori significativi per il campo type sono:
- component
- message
- module
- modules
Component
La direttiva
<jdoc:include type="component" />
non prevede altri parametri, e si limita a indicare che in quel punto deve iniziare l’output del componente principale della pagina. Infatti, qualsiasi pagina (ovvero: voce di menù) del nostro sito Joomla punta a un componente: che sia quello per la gestione degli articoli, quello per la registrazione, oppure lo shop di VirtueMart… la direttiva sopra riportata lascia spazio a questo componente principale.
Message
La direttiva
<jdoc:include type="message" />
è un segnaposto per eventuali messaggi di sistema: errori, ma anche inserimenti e modifiche completate con successo. Anche in questo caso, l’output viene generato direttamente dal componente principale della pagina.
Module
La direttiva
<jdoc:include type="module" name="breadcrumbs" />
include uno specifico modulo, e – come si vede nell’esempio – deve riportare come parametro il nome del modulo stesso. Nell’esempio, nel punto indicato verrà caricato il modulo chiamato Breadcrumbs. Nota: il modulo deve essere pubblicato e accessibile perchè la direttiva funzioni.
Questa direttiva non è molto diffusa, solitamente si preferisce includere i moduli per posizione anzichè per nome, come vediamo qui sotto.
Modules
La direttiva
<jdoc:include type="modules" name="top" />
include tutti i moduli pubblicati in una specifica posizione, nell’ordine specificato dalla Gestione moduli in area amministrativa. Nell’esempio, nel punto indicato verranno inclusi tutti i moduli pubblicati nella posizione top.
Style
Il parametro style può essere applicato alle direttive che riguardano come type “module” o “modules”. I possibile valori sono:
- rounded
- none
- table
- horz
- xhtml
- outline
Questi parametri in realtà non modificano solo lo stile di output dei moduli, ma anche il codice HTML che viene usato per visualizzare tali moduli. Questo è necessario per poter poi personalizzare l’aspetto con delle istruzioni CSS appropriate.
Ad esempio, uno style di tipo rounded incastona l’output all’interno di quattro <div>, in modo da poter poi applicare gli angoli arrotondati all’elemento inserendo uno sfondo diverso per ogni div.
E’ possibile definire anche degli stili personalizzati: potete trovare altre informazioni (in inglese) nella documentazione ufficiale di Joomla.
Commenti chiusi
Aggiornamento: i commenti lasciati nel tempo a questo articolo hanno poco a che fare con l’argomento originale e sono semplicemente richieste di assistenza. Dato che questo blog non è un centro di supporto generico per Joomla, mentre esistono forum molto più adatti allo scopo, abbiamo deciso di chiudere i commenti a questo articolo.
paolo
ciao, grazie per la guida, molto bella… sai aiutarmi per fare questa cosa: ?
Ho un sito in joomla con il componente hwvideoshare, una gallery video.
In prima pagina ho la homepage di questo componente con i vari moduli sorpa sotto a destra e a sinitra.
In un secondo momento ho installato un modulo stile latest news ma non riesco ad inserirlo dentro alla homepage della home page del componente hwvideo share.
Ho spulciato un po’ i file e sono .tpl
Io ho già identificato la situazione e inseirei semplicemente
funziona!!!
si vede… il problema è che se però tolgo dall index.php la visualizzazione della posizione non mi visualizza più il modulo annidato dentro la homepage di hwvideoshare.
Quindi ho lo vedo 2 volte o nemmeno una.
hai idea?
grazie infinite
Francesco
@paolo:
la tua richiesta è un po’ confusa; ma se ho ben capito, e stai cercando di inserire un modulo all’interno di un articolo (o comunque di un altro componente) credo che tu debba creare una nuova posizione personalizzata per il modulo, anzichè usarne una già esistente nel template. Guarda questo nostro articolo: https://gibilogic.com/2009/01/visualizzare-modulo-joomla-centro-pagina/ e vedi se ti suggerisce qualcosa.
Buon lavoro!
Marco
Ciao ma se voglio cambiare il colore dei messaggi di sistema come devo fare??nei css non si può!!
Francesco
@Marco:
certo che si può. Prova a spiegare con maggior chiarezza cosa vuoi ottenere e, anche se questo non è propriamente un forum di supporto 😉 proverò a darti qualche indicazione.
Marco
vorrei cambiare i colori dei messaggi di sistema es. “articolo salvato correttamente” “grazie per l’email inviata” ecc.. solo che andando sui css ho provato a cambiare tutti i colori ma quelli presenti nei messaggi di notifica non li trovo…come devo fare?
Francesco
@Marco:
hai provato a guardare la sorgente della pagina che mostra i messaggi di sistema? Ti segnalerà che gli elementi in questione sono, ad esempio:
#system-message dd.notice
#system-message dd.message
Nel CSS del template “rhuk_milkyway” questi elementi sono presenti eccome, e sono modificabili. Se nel tuo template non sono riportati, aggiungili e poi imposta le regole CSS che vuoi.
I template framework per Joomla « GiBiLog
[…] Se si è già esperti di HTML e CSS, creare un template specifico per Joomla non è difficile. Confrontando con, ad esempio, un tema per WordPress, in Joomla abbiamo un unico file con dei segnaposto che identificano le posizioni della griglia. Non affrontiamo più nel dettaglio l’argomento anche perchè ne abbiamo già parlato in un altro post. […]
Cesare
Vorrei modificare il formato di un menu specifico di joomla. In un normale contesto HTML/CSS si definisce una classe, che poi viene riferita nel css nelle regole a:link, a:visited, a:hover. In Joomla cosa si deve fare ?
Grazie
Francesco
@Cesare:
se non hai mai personalizzato un modulo Joomla, non è facile spiegarti in poche righe come fare. Rapidamente, ti consiglio di approfondire il parametro “Suffisso CSS modulo” che trovi nella configurazione del MODULO associato al MENU’ in questione.
In questo modo gli assegni una classe personalizzata, e può darsi che ti sia sufficiente
Oscar
Problema che si ripresenta in homepage con qualsiasi Template.
Il primo articolo in homepage è largo quanto il monitor permette escludendo i menu laterali. Quelli successivi sono larghi la metà (width=50%)
Non riesco a trovare il punto dove viene inserito questo parametro per eliminarlo…
Grazie
Francesco
@Oscar:
il template non c’entra nulla, è una impostazione della voce di menu di tipo “Aspetto Blog Prima Pagina” che ti dice su quante colonne vuoi distribuire i tuoi articoli, eccetto un certo numero di articoli “Principali”.
E adesso per tutti quanti: i commenti a questo articolo hanno poco a che fare con l’argomento originale e sono semplicemente richieste di assistenza. Dato che esistono forum di supporto su Joomla molto più adatti, chiudo i commenti a questo post.