Dalla versione 1.5 di Joomla! è stata inserita la possibilità di sovrascrivere alcuni file del core, senza per questo modificarli ma ottenendo risultati di visualizzazione differenti da quelli originali. Tale processo prende il nome di Override output del core di Joomla!.
La personalizzazione di un template Joomla! consiste nel cambiare sia la grafica, a seconda del target finale del sito, che il layout (impostazione a colonna unica, due colonne ecc). Possiamo considerare il template di Joomla! come se fosse un "abito". Esso può cambiare a seconda delle occasioni (nel nostro caso in base al tema) ma chi lo indossa (i contenuti) rimane sempre uguale.
Possiamo considerare, quindi, il template come la "maschera" dietro la quale lavorano in "background" tutte le estensioni di Joomla! installate, come moduli, componenti, plugin ecc. Come scritto nella intro, possiamo apportare modifiche al codice del core, sia a livello di PHP che di HTML, senza snaturare le funzioni del CMS.
Vantaggi dell'override
I vantaggi che l'override dell'output del core di Joomla! apporta sono notevoli e molto importanti. Si è a conoscenza del fatto che il codice HTML prodotto era costituito da molte tabelle, se pensiamo alle prime versioni di Joomla!, e da tanti elementi div
annidati ed inutili.
Adottando l'override è possibile introdurre modifiche sostanziali al corretto utilizzo dei tag senza per questo intaccare il core di Joomla! E' vero anche che una riscrittura del core potrebbe eliminare tanti elementi HTML superflui ma, in caso di aggiornamento del CMS, si ritornerebbe alla situazione iniziale. Per ovviare a questo, si ricorre all'override.
Individuare i files da sovrascrivere
Se non si ha dimestichezza con il codice sorgente di Joomla!, sarebbe meglio cominciare, prima di metterci mano, ad individuare i files che possono essere sovrascritti, senza causare danni al sito web. Se si accede tramite un qualsiasi programma FTP alla directory in cui è installato Joomla!, troviamo le seguenti cartelle:
/ administrator cache components images includes installation joomla language libraries logs media modules plugins templates tmp xmlrpc
Creare la cartella "html" per l'override
Prima di apportare modifiche, si deve creare una cartella denominata html
. Tale cartella va collocata nella cartella del template che stiamo utilizzando. Fatto questo, la cartella del nostro template sarà così formata:
Cartella-Template/html/Nome-Estensione/Nome-View/Nome-File.php
Per esempio, se volessimo sovrascrivere l'output di un articolo, generato dal componente com_content
, è necessario copiare il file da:
root/components/com_content/views/article/tmpl/default.php
a
Cartella-Template/html/com_content/article/default.php
Si noti la differenza sostanziale del percorso tra le due cartelle.
In questo modo, qualsiasi cosa verrà scritta nel file default.php
è vero che verrà visualizzata nel browser ma non andrà ad intaccare minimamente il file default.php
del core. Non è una cosa di poco conto. Se non dovesse soddisfare le nostre aspettative, si cancella e si ripete il passaggio.
Creare override pagina categoria blog
Si vuol apportare, per esempio, una modifica alla pagina categoria blog, aggiungendo un titolo del tipo: "Ultime dal Blog". Come detto più su, se aggiungessimo il titolo direttamente nella pagina del core dei files di Joomla!, tale frase verrebbe sovrascritta al primo aggiornamento utile. Invece dobbiamo porci noi nella condizione di sovrascrivere un file e non avere problemi in seguito.
Il file in oggetto blog.php si trova al seguente percorso:
root/components/com_content/views/category/tmpl/blog.php
Lo si porti sul desktop e lo si apra con un editor di testo. All'inizio del codice, dove è scritto:
<div class="blog<?php echo $this->pageclass_sfx; ?>" itemscope itemtype="https://schema.org/Blog">
scrivere, immediatamente al rigo successivo:
<h1>Ultime dal Blog</h1>
Il file non va riportato nella sua posizione originaria, bensì nella cartella di cui si è parlato all'inizio: html
, al seguente percorso:
root/templates/template-in-uso/html/com_content/category/blog.php
Una volta richiamata la pagina della categoria blog, apparirà il titolo appena scritto.