Head Remover

A quanti di Voi realizzano template partendo da zero, sarà sicuramente capitato di voler rimuovere "css" o "js" non utilizzati che Joomla inserisce nel front end, le vecchie librerie mootools, caption.js o html5fallback.js.

Sviluppando template ci capita di dover integrare librerie js di terze parti: queste hanno dei prerequisiti e non sempre quelle del "core" di Joomla sono compatibili. Bisogna quindi andarle a rimuovere manualmente sostituendole con quelle più adatte allo scopo.

Ad esempio quando si sviluppano componenti ad hoc, capita di dover utilizzare librerie js specifiche per gestire le operazioni front end. Al fine di rendere il sito il più snello possibile ed evitare di caricare js inutili in tutte le pagine del nostro sito, lo si fa dall'interno del componente, ma utilizzando il metodo statico JDocument::addScript messo a disposizione del Framework: il caricamento della libreria avviene prima del caricamento delle librerie di testata o_O.

Questo spesso comporta di dover aggiungere il js direttamente sulla index del template privando in tal modo il componente di una sua dipendenza fondamentale. Inoltre, il js così caricato, (a meno che non si voglia arricchire il template di istruzioni condizionali) verrà caricato in ogni pagina del sito anche se non richiesto.

Purtroppo in Joomla l'override parziale delle classi di sistema non è supportato ed effettuare un override dell'intera classe JDocument non è facilmente mantenibile (lo si andrebbe a cancellare al primo aggiornamento di Joomla).

Abbiamo quindi creato un plugin di tipo System che agisce sull'hook onBeforeCompileHead() e si occupa di effettuare una gestione dei suoi componenti un po' più flessibile di quella che Joomla attualmente mette a disposizione.

Il plugin in questione si occupa di:

  • effettuare (se richiesto) l'unload di tutti i file che Joomla include di default, con possibilità di selezionarli singolarmente
  • gestire un elenco di file css/js da poter scaricare
  • gestire un elenco di file css/js da caricare, rispettando in ogni pagina l'ordine prestabilito
  • Se specificato, rimuovere il famoso tag generator, in primis per questioni di sicurezza e in secondo luogo perché effettivamente non è bello da vedere!
  • Se specificato, rimuovere il famoso tag author
  • Aggiungere Meta Tag aggiuntivi

Abbiamo deciso di mettere a disposizione della community questo plugin, che a nostro avviso risolve una mancanza del cms, anche per avere un riscontro da parte Vostra sulla questione ed eventualmente, se ritenuto necessario, creare una richiesta per integrare un sistema di dependency manager per le funzioni 'JDocument::addScript()' e 'JDocument::addStyleSheet()' magari come quelle presenti nel framework Yii2 (per chi vuole approfondire ecco il link alla documentazione: qui

Siamo ansiosi di avere qualsiasi feedback riguardo miglioramenti, consigli o segnalazioni di errore.