Back to top

Autore Topic: [RISOLTO] Creazione plugin per modificare tutta la pagina  (Letto 4453 volte)

Offline jabber

  • Esploratore
  • **
  • Post: 114
    • Mostra profilo
Ho da poco convertito un plugin da tipo content a system perché ho necessità di agire su tutto l' html della pagina, indipendentemente dal component su cui mi trovo e dai moduli che sto visualizzando, ripeto, voglio agire su tutta la pagina.
Ho quindi letto in giro che il plugin tipo content agisce solo sugli articoli mentre il tipo system permette di andare ben oltre.
Sto ancora cercando di prendere famigliarità con i 4 metodi del plugin tipo system:
  • onAfterInitialise
  • onAfterRoute
  • onAfterDispatch
  • onAfterRender
Nonostante le stia provando tutte, non riesco a trovare la variabile (che sia oggetto, array o altro) che contiene tutto l'html che viene restituito al browser.
Ho provato a lavorare con molti metodi e variabili di JFactory::getApplication() e  JFactory::getDocument() ma i risultati sono molto scarsi, il massimo che riesco ad ottenere è il codice HTML del component che si trova correntemente nella pagina che sto visualizzando, ciò lo faccio così:
$doc =& JFactory::getDocument(); // doc is a JDocument, funziona solo negli eventi "onAfterDispatch" e "onAfterRender"
$doc = $doc->getBuffer()
echo echo $doc["component"][""];

L'array associativo che ritorna il metodo getBuffer() di cui sopra possiede un unico elemente ed è appunto $doc["component"][""];
Come faccio ad ottenere anche il codice dei moduli, o meglio, quale è il modo per ottenere l'intero html della pagina che viene restituita al broeser?


Buon pomeriggio a tutti
« Ultima modifica: 19 Gen 2012, 09:46:39 da jabber »

mau_develop

  • Visitatore
Re:Creazione plugin per modificare tutta la pagina
« Risposta #1 il: 13 Gen 2012, 23:19:19 »
non riesco a trovare la variabile (che sia oggetto, array o altro) che contiene tutto l'html che viene restituito al browser.
-------------------------------------------------------------
??? ... il codice html letto dal browser è quello del template e non sta in nessuna variabile

M.

Offline jabber

  • Esploratore
  • **
  • Post: 114
    • Mostra profilo
Re:Creazione plugin per modificare tutta la pagina
« Risposta #2 il: 14 Gen 2012, 07:50:06 »
Ma prima che joomla spedisca al browser tutto l'html, tale codice dove sta ?

Offline jabber

  • Esploratore
  • **
  • Post: 114
    • Mostra profilo
Re:Creazione plugin per modificare tutta la pagina
« Risposta #3 il: 19 Gen 2012, 09:43:40 »
Dopo circa 5 giorni di ricerca decisamente a sprazzi riesco ad entrare in possesso della "conoscenza" e quindi ad autorispondermi :) .
Non per pazzia ma per correttezza posto la mia soluzione in modo che possa servire ai "posteri".

Nella funzione "onAfterRender" per ottenere il codice html della pagina (senza sezione HEAD, però ho verificato che tanto mi basta) faccio:
$output = JResponse::getBody();
Lavoro sulla var $outpu e poi setto l'html in uscita così:
JResponse::setBody($output);

Era molto semplice, ma non conoscevo le funzioni "getBody()" e "setBody()".

Io, speriamo che me la cavo! ;)

mau_develop

  • Visitatore
Re:[RISOLTO] Creazione plugin per modificare tutta la pagina
« Risposta #4 il: 19 Gen 2012, 12:31:17 »
non capisco perche non fai l'override...

Offline jabber

  • Esploratore
  • **
  • Post: 114
    • Mostra profilo
Re:[RISOLTO] Creazione plugin per modificare tutta la pagina
« Risposta #5 il: 19 Gen 2012, 13:49:00 »
Mi puoi spiegare meglio cosa intendi ? Così non capisco bene, in alternativa mi accontento che tu mi passi un link.

Grazie
J

mau_develop

  • Visitatore
Re:[RISOLTO] Creazione plugin per modificare tutta la pagina
« Risposta #6 il: 19 Gen 2012, 14:52:57 »
solitamente un plugin non interviene a modificare codice html ma "fa qualcosa" quando il framework "passa di lì" (on+Trigger)
Quando arrivi all'onAfterRender (spero di nn sbagliare a ricordare) è il trigger posto dopo che viene unita la view al codice.
La view non è null'altro che il template associato a quella view, così come il template è ... l'html.
I template delle view possono essere modificati con un override che risulta un po' più complicato nel caso dovesse intervenire solo su alcuni contenuti, ma nel tuo caso non dovrebbe sussistere qs problema.
Come si fa un override è abbastanza banale e trovi documentazione sia su qs forum che su docs.joomla

M.

Offline jabber

  • Esploratore
  • **
  • Post: 114
    • Mostra profilo
Re:[RISOLTO] Creazione plugin per modificare tutta la pagina
« Risposta #7 il: 19 Gen 2012, 15:25:42 »
Ora capisco cosa intendevi, comunque il mio obiettivo è avere tutto l'html della pagina (sezione head esclusa) al fine di poter lanciare su di essa alcune espressioni regolari volte a determinare alcuni pattern per me rilevanti.
Una volta tovati li sostituisco con altro codice e resituisco il risultato al browser.
Per questo ho intitolato il thread " Creazione plugin per modificare tutta la pagina".

Con le mia attuali conoscenze non saprei fare in altro modo e accetto qualsiasi ulteriore consiglio mi venga dato in merito.


Ciao

J

mau_develop

  • Visitatore
Re:[RISOLTO] Creazione plugin per modificare tutta la pagina
« Risposta #8 il: 19 Gen 2012, 21:35:51 »
ah ok, allora può avere un senso anche il plugin.

M.

Offline keyascii

  • Appassionato
  • ***
  • Post: 495
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] Creazione plugin per modificare tutta la pagina
« Risposta #9 il: 16 Feb 2012, 18:05:31 »
Ciao Jabber,
ho bisogno della stessa cosa ma a m
 succede una cosetta un po' strana... se si verifica una determinata condizione, faccio il getBody, lo modifico, rifaccio il setbody ma mi da QUESTO ERRORE:
Warning:  Cannot modify header information - headers already sent by (output started at /CARTELLADELSERVER/plugins/system/ilmioplugin.php:21) in /CARTELLADELSERVER/templates/MIOTEMPLATE/libs/miotemplate.helper.php on line 103

qualche suggerimento?
Se io e te abbiamo una cosa e ce la scambiamo, io e te abbiamo ancora una cosa, ma se io e te abbiamo un'idea e ce la scambiamo, tu hai 2 idee e io ho due idee!

 



Web Design Bolzano Kreatif