Joomla.it Forum
Non solo Joomla... => Sviluppo => : iacoposk8 18 Dec 2012, 16:49:52
-
Ciao a tutti! c'è modo di creare un plugin o un modulo o un componente, dove scrivendo l'url tipo:
index.php?option=plg_test&task=pippo mi apre il file plg_test.php e mi lancia la funzione php di nome pippo(), eseguendo solo quello, senza caricarmi il template e tutte le altre cose grafiche o superflue.
grazie :)
-
option=plg_test
--------------------
tu non hai nemmeno idea di cosa sia un plugin....
-
ma credi davvero di poter aiutare qualcuno con questi commenti?
tutte le volte è così, non mi hai mai aiutato, non voglio litigare ma davvero, lo sai anche te che non è utile un commento così, quindi non scrivermi nemmeno più, davvero, basta...
c'è modo di creare un plugin O un modulo O un componente, dove scrivendo l'url TIPO: ...
-
se io scrivo
index.php?option=com_test&task=test.pippo
(così ti piace di più)
lancio si la funzione specifica ma in più mi carica il template e tutti i moduli e i plugin.
quindi dubitando (magari erroneamente) che si potesse fare una cosa analoga ai componenti, senza caricare template ecc... mi son detto: magari i plugin lo possono fare, non avendo mai approfondito la programmazione di essi, pur sapendo cosa fanno...
e poi, sicuramente erroneamente mi son detto, chiediamo sul forum
-
se vuoi solo eseguire la funzione del componente basta che metti un die in fondo ad essa e non t carica altro.
I plugin o moduli non si richiamano direttamente, i plugin si richiamano solo triggerando un evento, i moduli nel template o tramite funzioni apposite.
Scusa ma non te la prendere ma anche io ho avuto la stessa reazione di mau_develop quando ho letto questo post. Hai 500 post su questo forum e non ci credo che non hai ancora capito come funziona joomla nonostante tu ci traffichi cosi spesso, forse dovresti iniziare a prendere una buona guida e studiarla per capire meglio l'architettura. poi fai come vuoi. ciao
-
magari mi sono posto male facendo l'esempio con il plugin che sarebbe stato impossibile... però era un tentativo.. vedi mai che si poteva fare...
comunque mettere il die non è una soluzione secondo me... io voglio eseguire solo la funzione, senza caricare moduli e template non per un fattore estetico, ma di prestazione... se noi mettiamo in un modulo in una posizione tale che venga caricato prima del componente e scriviamo sleep(10); dopo 10 secondi vedremo il risultato della funzione del componente... (questo per dire che una chiamata a una funzione può risultare lentissima su alcuni siti)
però se devo fare tante chiamate ajax a questa funzione le prestazioni inizierebbero a risentirne parecchio, specie se iniziano a essere numerosi gli utenti che richiedono questa pagina
-
Ti posso assicurare che la chiusura dell'applicazione per le chiamate ajax è la nuova prassi di joomla, prima si faceva una richiesta con format=raw nell'url e andare, adesso non funziona piu cosi.
Tanto per esempio questa è la funzione di ordinamento delle categorie in ajax del com_categories di joomla 3.0
public function saveOrderAjax()
{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// Get the arrays from the Request
$pks = $this->input->post->get('cid', null, 'array');
$order = $this->input->post->get('order', null, 'array');
$originalOrder = explode(',', $this->input->getString('original_order_values'));
// Make sure something has changed
if (!($order === $originalOrder)) {
// Get the model
$model = $this->getModel();
// Save the ordering
$return = $model->saveorder($pks, $order);
if ($return)
{
echo "1";
}
}
// Close the application
JFactory::getApplication()->close();
}
Vedi che alla fine esegue JFactory::getApplication()->close(); che chiude l'applicazione
-
ecco! ora si :) mi sembrava impossibile che per lanciare una funzione tramite ajax si dovesse richiamare altre 1000 cose inutili, grazie :)