Joomla.it Forum

Non solo Joomla... => Sviluppo => : mau_develop 12 May 2012, 12:08:04

: Plugin JFornero
: mau_develop 12 May 2012, 12:08:04
Ovvero come ti tolgo (o ti sostituisco) dal render i tag che voglio

Non è il top dell'eleganza ma a volte è pratico o come si dice "quick and dirty"

... mi servono quelli che io chiamo i macro eventi, quelli di sistema e piazzare la mia ministra quando si verifica il completamento del render... quindi plugin tipo system e trigger onAfterRender()
:
class plgSystemFornero extends JPlugin{

function onAfterRender(){

// mi piglio tutto ciò che joomla ha pazientemente costruito fino a quì
$html = JResponse::getBody();

// ora, ogni tag che voglio togliere lo riconosco e 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);

// Ridò a Joomla il contenuto dopo le tasse
JResponse::setBody($html);

// Chiudo
   }
}

M.
: Re:Plugin JFornero
: mau_develop 12 May 2012, 20:43:58
...poi c'è un'altro trigger interessante da sfruttare per la manipolazione del nostro template..
:
function onAfterDispatch(){
       
            $mainframe =& JFactory::getApplication();

            $mainframe->setTemplate('beez5');

cosa succede facendo così?

sono cose molto semplici da implementare, ... magari un template per il mobile? ... per diversi mobile? visto che JBrowser funziona abbastanza bene...

dovete solo ricordarvi di includerla:
:
jimport( 'joomla.environment.browser' );
e istanziarla (magari nel costruttore):
:
$this->navigator = JBrowser::getInstance();
e usarne i metodi (es.):
:

if($this->navigator->isMobile() ){
  $mainframe->setTemplate('mobile');
}

M.
: Re:Plugin JFornero
: maicolstaip 12 May 2012, 21:01:12
10/10 per il titolo mau
: Re:Plugin JFornero
: mau_develop 12 May 2012, 21:09:22
:) ... perchè è brutale... non sta a vedere se lo script serve o meno... se hai deciso di segare "script"... basta script!

M.

EDIT:  aldilà dello scherzo, questo post perchè.... perchè cercavo una soluzione semplice e rapida per poter visualizzare un sito in un certo modo solo con un determinato agent del browser.
Non ho pensato subito a scriverlo quanto a smanacciare qualcosa di esistente... mi son venuti i brividi, strano che non siano state segnalate vulnerabilità....
Molti si infilano in mobile joomla che , per l'amor diddio è un gran lavoro, interfacciare con le api di tera non è semplice... però è pesantissimo e le peculiarità nessuno le sfrutta, così mi sono messo a pasticciare con i trigger per manipolare la visualizzazione.... ma si può fare molto di più e non è così difficile