Ecco un altro modo per poter manipolare velocemente certe "rigidità" di Joomla. Facilmente le prossime versioni porteranno queste soluzioni all'inutilità, offrendo anche al semplice utente GUI la possibilità di intervenire in modo sempre più capillare sulle funzionalità del CMS.
Prima di decidere che è la soluzione a qualche vostro problema dovete capire se lo script che volete rimuovere occorre alle funzionalità del CMS, altrimenti correte il rischio di ritrovarvi un sito inusabile. Se questo dovesse accadere nessuna paura; basta disabilitare il plugin che avete creato: dall'interfaccia amministrativa se ne avete accesso, altrimenti direttamente dalle tabelle del database.
Per illustrare questa funzionalità abbozzo un plugin che potete tranquillamente usare come base per adattarlo alle vostre esigenze. Il trigger che sfrutto per questo plugin è onAfterRender();, come descrive la documentazione:
This event is triggered after the framework has rendered the application.
Rendering is the process of pushing the document buffers into the template placeholders, retrieving data from the document and pushing it into the into the JResponse buffer.
When this event is triggered the output of the application is available in the response buffer.
class plgSystemMioPlugin extends JPlugin{ function onAfterRender(){ // ... secondo le docs, nel buffer response trovo l'output dell'applicazione.. $html = JResponse::getBody(); // ora, con l'ausilio di regular expressions, riconosco i tag e li sostituisco con "niente" //-> images $html = preg_replace('|<img[^>]*?/?>|is','', $html); //-> iframes $html = preg_replace('|<iframe.*?</iframe>|is', '', $html); $html = preg_replace('|<iframe.*?/?>|is', '', $html); //-> object $html = preg_replace('|<object.*?</object>|is', '', $html); $html = preg_replace('|<object.*?/?>|is', '', $html); //-> embeds $html = preg_replace('|<embed.*?</embed>|is', '', $html); $html = preg_replace('|<embed.*?/?>|is', '', $html); //-> applets $html = preg_replace('|<applet.*?</applet>|is', '', $html); $html = preg_replace('|<applet.*?/?>|is', '', $html); //-> scripts $html = preg_replace('|<script.*?</script>|is', '', $html); //-> stylesheets $html = preg_replace('|<link rel="stylesheet".*?/?>|is', '', $html); $html = preg_replace('|<link rel="stylesheet".*?</link>|is', '', $html); // Quali tag eliminare può diventare oggetto di configurazione, quindi parametri nel manifest // Soprattutto invece di "sostituire con nulla" il tag rimosso posso aggiungerne uno mio // Ridò a Joomla il contenuto dopo la pulizia JResponse::setBody($html); // Chiudo }
Non rimane che creare i nostri files per il plugin, posizionarli nella giusta cartella all'interno di /plugins (lato pubblico) del nostro CMS.
Usate la gestione estensioni-> esplora per individuare il vostro plugin da installare e fatelo fare a Joomla spuntando il checkbox e cliccando su installa.