Back to top

Autore Topic: Plugin JFornero  (Letto 1167 volte)

mau_develop

  • Visitatore
Plugin JFornero
« il: 12 Mag 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()
Codice: [Seleziona]
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.

mau_develop

  • Visitatore
Re:Plugin JFornero
« Risposta #1 il: 12 Mag 2012, 20:43:58 »
...poi c'è un'altro trigger interessante da sfruttare per la manipolazione del nostro template..
Codice: [Seleziona]
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:
Codice: [Seleziona]
jimport( 'joomla.environment.browser' );
e istanziarla (magari nel costruttore):
Codice: [Seleziona]
$this->navigator = JBrowser::getInstance();
e usarne i metodi (es.):
Codice: [Seleziona]

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

M.
« Ultima modifica: 12 Mag 2012, 21:04:37 da mau_develop »

Offline maicolstaip

  • Global Moderator
  • Instancabile
  • ********
  • Post: 17623
  • Sesso: Maschio
    • Mostra profilo
Re:Plugin JFornero
« Risposta #2 il: 12 Mag 2012, 21:01:12 »
10/10 per il titolo mau
Non si risponde a PM tecnici. Postate sul forum. Grazie.

mau_develop

  • Visitatore
Re:Plugin JFornero
« Risposta #3 il: 12 Mag 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
« Ultima modifica: 12 Mag 2012, 21:37:02 da mau_develop »

 



Web Design Bolzano Kreatif