AssistenzaJoomla.it è il nuovo sito per tutti coloro che hanno bisogno di un'assistenza professionale per la realizzazione di un sito Joomla!Ajax e Mootols
Nello sviluppo di componenti o moduli Joomla può risultare molto utile poter effettuare chiamate asincrone a script php presenti sul server che ospita il sito; il tutto, senza scatenare un ricaricamento della pagina. In pratica, può essere molto utile poter utilizzare Ajax.
Ajax non è altro che l'insieme delle tecniche utilizzate per effettuare chiamate asincrone a script attraverso Javascript; si tratta quindi di utilizzare funzioni Javascript per chiamare script (ad esempio php), ed utilizzare il loro output per aggiornare parte della pagina visualizzata all'utente, senza forzarne il ricaricamento.
Implementare da zero le funzionalità Ajax può risultare molto complicato (basta pensare che, a seconda del browser, può essere necessario utilizzare alcune librerie piuttosto che altre); molto più semplice, invece, è utilizzare librerie già pronte e liberamente ridistribuibili: è il caso di Mootools.
Le funzioni Mootols per Ajax
Utilizzare Mootols per implementare funzioni Ajax è molto semplice. E' sufficiente sfruttare la classe "Ajax", che va inizializzata passandole tre semplici parametri:
- URL: la url da chiamare in modalità asincrona, il quale risultato verrà utilizzato per aggiornare parte della pagina (una div)
- METHOD: la modalità con la quale chiamare la URL specificata; può essere POST o GET
- UPDATE: l'identificativo della DIV da aggiornare, riempiendola con l'output
function sendAjaxRequest()
{
var url = "http://www.dmdigital.it/index.php?option=com_ajax&task=getDemo";
var myAjax = new Ajax(url, {method: 'get', update: 'responseDiv'}).request();
}
Qui sotto l'intera documentazione della classe Ajax:
Ajax
Class: Ajax
An Ajax class, For all your asynchronous needs.
Inherits methods, properties, options and events from <XHR>.
Arguments:
url - the url pointing to the server-side script.
options - optional, an object containing options.
Options:
data - you can write parameters here. Can be a querystring, an object or a Form element.
update - $(element) to insert the response text of the XHR into, upon completion of the request.
evalScripts - boolean; default is false. Execute scripts in the response text onComplete.
When the response is javascript the whole response is evaluated.
evalResponse - boolean; default is false. Force global evalulation of the whole response,
no matter what content-type it is.
Events:
onComplete - function to execute when the ajax request completes.
Example:
>var myAjax = new Ajax(url, {method: 'get'}).request();
Gestire le variabili di sessione con JSession
Chi programma in PHP è familiare con l'array $_SESSION e con le funzioni per gestire le sessioni... Nello sviluppo di moduli e componenti per Joomla il problema di gestire dati condivisi all'interno della stessa sessione è notevolmente semplificato dalle API messe a disposizione dal framework. In particolare, la classe JSession rappresenta il materiale sul quale possiamo lavorare. Innanzitutto, quindi, quello che dobbiamo fare è istanziare un oggetto JSession
$session = JSession::getInstance('none',array());
In questo modo otteniamo un'istanza di JSession che ci mette a disposizione una nutrita schiera di metodi; è evidente che ciò che ci interessa maggiormento è settare e leggere variabili di sessione... A questo scopo, esistono due metodi molto semplici che assolvono il compito. Per leggere una variabile di sessione utilizziamo get(), i quali parametri indicano rispettivamente il nome della variabile da leggere e il valore di default da porre nel caso questa non sia trovata. Ad esempio:
$bookingid = $session->get('bookingid', -1);
ottiene il valore bookingid dalla sessione, mettendolo a -1 se non lo trova. Invece, se vogliamo settare il valore di una variabile, abbiamo a disposizione set(), al quale passiamo il nome della variabile da impostare e il valore da darle:
$session->set('bookingid', 100);
setta a 100 il valore bookingid della sessione.
Oltre a queste funzionalità di base rimangono da vedere alcuni metodi che possono rivelarsi utili in determinate situazioni:
- clear(), che esegue l'unset di tutti i dati presenti nella sessione;
- getExpire(), che restituisce i minuti mancanti all'expire della sessione;
- getId(), che restituisce l'id della sessione.
Per ulteriori dettagli, vi consiglio di vedere la documentazione ufficiale.
Ottenere il tipo di browser con la classe JBrowser di Joomla
Capita a volte di dover generare codice differente a seconda del browser che sta visualizzando il sito; ciò accade soprattutto per problemi retrocompatibilità, ad esempio nell'utilizzo di particolare codice JS o CSS su IE6. Normalmente, nello sviluppo web, si ricorre a sistemi HTML (per esempio particolari tipi di commenti condizionali per IE) o CSS. Nel nostro caso, avendo a disposizione tutto il framework di Joomla, non dobbiamo fare altro che sfruttare ai nostri scopi una particolare classe, JBrowser.
Usare Ajax nello sviluppo di componenti per Joomla
Nello sviluppo di estensioni per Joomla ben presto ci si scontra con la necessità di realizzare pagine in grado di caricare dinamicamente parte del loro contenuto senza dovere forzatamente fare il reload completo... E' in questi casi che, ovviamente, si pensa ad Ajax. Tuttavia, se per lo sviluppatore PHP classico questo non presenta problemi concettuali, chi utilizza il framework Joomla può chiedersi come sfruttare questa tecnologia nelle proprie pagine.
Sviluppo Estensioni per Joomla
Molti di coloro che lavorano con Joomla si trovano al punto, prima o poi, di volere personalizzare il comportamento di un modulo o di un componente che hanno installato; inevitabilmente, anche per chi ha un'ottima conoscenza di PHP, l'analisi del codice sorgente risulta complicata, resa difficile soprattutto dalla struttura stessa dei file che compongono l'estensione che si vuole modificare. Del resto, è evidente che, per chi utilizza Joomla a livello professionale, il potere mettere le mani su estensioni, moduli e plug-in diventa qualcosa di essenziale per garantire ai clienti un servizio completo (quante volte, infatti, un committente chiede di personalizzare le schermate di un'estensione?).
Il problema fondamentale per chi si accinge ad entrare nel mondo dello sviluppo delle estensioni per Joomla è la mancanza su internet di documentazione libera sufficientemente approfondita. Cercando tutorial o guide ci si scontra con articoli che danno solamente una vaghissima overview dell'argomento, lasciando il campo pieno di domande e dubbi. Purtroppo, anche una ricerca in lingua inglese non dà i risultati sperati.
Anche noi ci siamo trovati di fronte a questa situazione, e qui vi diamo tutti i consigli che abbiamo potuto trarre dalla nostra esperienza.


