Autore Topic: [Risolto] Richiamare plug-in da moduli [joomla 1.5]  (Letto 6649 volte)

Offline .Andrea S.

  • Instancabile
  • ******
  • Post: 4404
  • Sesso: Maschio
    • Mostra profilo
[Risolto] Richiamare plug-in da moduli [joomla 1.5]
« il: 06 Ott 2008, 16:57:21 »
Ciao,

Sto svliluppando un modulo per 1.5 ma sto impazzendo perchè vorrei far si che il plug-in loadmodule funzionasse anche nel mio modulo.
Ho trovato questa pagina in docs.joomla.org che recita:
Citazione
To activate the plugins for your addon, you just have to use the following line of code:
Codice: [Seleziona]
$result = $mainframe->triggerEvent( 'onSomething', $param );
Ma non riesco proprio a farlo funzionare.
Mi potete dare una mano per favore?
Grazie mille
« Ultima modifica: 07 Ott 2008, 15:01:23 da .Andrea S. »
Andrea | www.joomlovers.net | Il sito per gli amanti di Joomla!

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #1 il: 06 Ott 2008, 20:34:16 »


Usi MVC, giusto?

Nella View, nel file view.html.php metti, oltre al resto,

// carica il plugin
$import = JPluginHelper::importPlugin( 'categoria-del-plugin', $row->element );
$dispatcher =& JDispatcher::getInstance();
$title = $dispatcher->trigger( 'onRenderTitle', array() );
$this->assignRef('title', $title);
parent::display($tpl);


Sempre nella view, in tmpl/default.php, hai a disposizione il valore che hai in $title e vi accedi così:

$this->title[$i]

Il plugin deve avere una funzione

function onRenderTitle() {
   return "titolo";
}

So che non sono stato chiaro  ::)
Extensioni e Template per Joomla

Offline .Andrea S.

  • Instancabile
  • ******
  • Post: 4404
  • Sesso: Maschio
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #2 il: 06 Ott 2008, 21:05:35 »
intanto grazie per la risposta!

no non uso MVC, pensavo fosse per i componenti, ad ogni modo non sono a quei livelli di sviluppo  :(

domanda:
loadmodule -> categoria "content" -> giusto?

title -> devo sostiturlo con il nome del plug-in?
Mi sa che non ho capito molto  :'(
 :)
Andrea | www.joomlovers.net | Il sito per gli amanti di Joomla!

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #3 il: 06 Ott 2008, 21:45:42 »
Scusa Andrea mi è sfuggito il fatto che è un modulo.. e tra le altre cose ho pure mal capito la domanda  ::)

La linea 17 del plugin loadmodule dice

$mainframe->registerEvent( 'onPrepareContent', 'plgContentLoadModule' );

In pratica la funzione plgContentLoadModule, che effettivamente carica il modulo, viene richiamata quando è generato l'evento onPrepareContent, ovvero prima ancora che venga generato alcun output.

Premetto che non ho mai provato a fare quello che ti dico ora, ma potresti creare un plugin duplicando loadmodule, ed al posto di

$mainframe->registerEvent( 'onPrepareContent', 'plgContentLoadModule' );

inserisci

$mainframe->registerEvent( 'onQuandoVoglioIo', 'plgContentLoadModule' );

In questo modo il plugin viene richiamato quando tu emetto l'evento onQuandoVoglioIo:

/*
 * Process the prepare content plugins
 */
JPluginHelper::importPlugin('content');
      $results = $dispatcher->trigger('onQuandoVoglioIo', array ());


Dovresti però controllare i parametri che passi.. in modo da caricare la posizione che vuoi tu. Oppure settare la posizione da caricare direttamente nel tuo plugin "copia di loadmodule"

..come al solito spiegarlo è complicato!
Extensioni e Template per Joomla

Offline .Andrea S.

  • Instancabile
  • ******
  • Post: 4404
  • Sesso: Maschio
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #4 il: 07 Ott 2008, 09:53:24 »
Flavio grazie per la pazienza, ho capito qualcosa di più ma mi sa che ti sto facendo impazzire perchè mi sono spiegato male.

il modulo al quale sto lavorando permette di inserire del testo e visualizzarlo.

Io vorrei far in modo che se si inserisce il classico
Codice: [Seleziona]
{loadposition user1} venissero visualizzati i moduli in quella posizione. Ovvero vorrei far in modo che il/i plug-in fosse disponibili anche nel mio modulo.

Dalla pagina che ho linkato nel primo post mi sembrava estremamente facile, ma evidentemente mi sfugge qualcosa.

Avevo visto che il plug-in per il richiamo dei moduli conteneva
Codice: [Seleziona]
$mainframe->registerEvent( 'onPrepareContent', 'plgContentLoadModule' ); e infatti avevo provato a usare
Codice: [Seleziona]
$result = $mainframe->triggerEvent( 'onPrepareContent');nel codice del mio modulo, (ho levato $param in quanto diceva che era opzionale), ma il massimo che sono riuscito ad ottenere è un "array".
Spero di essere stato un po più chiaro e scusa ancora per l'incomprensione.  ;)

Andrea | www.joomlovers.net | Il sito per gli amanti di Joomla!

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #5 il: 07 Ott 2008, 10:50:54 »
Se guardi il codice del plugin loadmodule, vedi che alla linea 34 c'è

$regex = '/{loadposition\s*.*?}/i';

e poi

preg_match_all( $regex, $row->text, $matches );

Ovvero in $row->text dovresti inserire il testo pubblicato dal tuo modulo, così che il plugin loadmodule lo analizzi ed
inserisca i moduli che vuoi visualizzare.

Prova a fare così, nel modulo inserisci il codice

$row->text = $testoGeneratoNelTuoModulo;
$result = $mainframe->triggerEvent( 'onPrepareContent', $row);

Il risultato dovrebbe essere il nuovo testo, comprensivo dei moduli presenti nella posizione user1 che hai indicato di caricare.
Extensioni e Template per Joomla

Offline .Andrea S.

  • Instancabile
  • ******
  • Post: 4404
  • Sesso: Maschio
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #6 il: 07 Ott 2008, 11:40:00 »
ottengo un "Array"

Il codice è questo:
Codice: [Seleziona]
// carica il plugin
$row->text = $modulepos;
$result = $mainframe->triggerEvent( 'onPrepareContent', $row);
echo "$result";
dove $modulepos è semplicemente
Codice: [Seleziona]
{loadposition user8}
Andrea | www.joomlovers.net | Il sito per gli amanti di Joomla!

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: Richiamare plug-in da moduli [joomla 1.5]
« Risposta #7 il: 07 Ott 2008, 12:50:53 »

prova

$row->text = $output_modulo; //comprensivo di {load ecc}
$result = $mainframe->triggerEvent('onPrepareContent', $row);


L'array dovrebbe contenere l'output del plugin..

$result[0]
Extensioni e Template per Joomla

Offline .Andrea S.

  • Instancabile
  • ******
  • Post: 4404
  • Sesso: Maschio
    • Mostra profilo
Re: [Risolto] Richiamare plug-in da moduli [joomla 1.5]
« Risposta #8 il: 07 Ott 2008, 15:03:52 »
Preso dalla disperazione ho preso un modulo che faceva questo e ho copiato!
Non chiedetemi quindi come sia esattamente la soluzione  ;D

Flavio Grazie grazie grazie per la pazienza  :)
Andrea | www.joomlovers.net | Il sito per gli amanti di Joomla!

Offline copesc

  • Appassionato
  • ***
  • Post: 500
    • Mostra profilo
Re: [Risolto] Richiamare plug-in da moduli [joomla 1.5]
« Risposta #9 il: 07 Ott 2008, 18:58:52 »
Preso dalla disperazione ho preso un modulo che faceva questo e ho copiato!

Bene, hai risolto!
Extensioni e Template per Joomla

 

Host

Torna su