Javascript in Drupal7 - parte 1
Drupal mette a disposizione degli utenti un nutrito numero di funzioni javascript già pronte per l'uso e basate sulla libreria jQuery. I menù contestuali per la modifica di un nodo o blocco, oppure l'intestazione delle tabelle che viene mantenuta anche scorrendo la pagina sono solo alcuni degli esempi. Possiamo trovare i file che contengono queste funzionalità all'interno della cartella misc nella root del sito, verranno inseriti automaticamente nella pagina se richiesti.
Questo è il primo di una serie di tre articoli dedicati all'uso di javascript in Drupal 7.
Aggiungere javascript in moduli e temi Spesso ci si trova nella situazione in cui è necessario realizzare il proprio script e inserirlo all'interno delle pagine del sito. Il nuovo script può essere inserito a livello di modulo o di tema custom. A livello di modulo abbiamo due opzioni, utilizzare la funzione drupal_add_js oppure nel caso di javascript da utilizzarsi in un form aggiungere lo script all'array $form. La funzione drupal_add_js nella sua versione più semplice può essere usata in questo modo:
drupal_add_js( drupal_get_path('module', 'nome_modulo') . '/js/script.js');
così facendo stiamo inserendo, oltre ai file javascript già presenti, anche il file script.js che si trova nella cartella js all'interno del modulo nome_modulo (ovunque questo modulo si trovi tra le varie posizioni ammesse da Drupal). Se invece il javascript contiene del codice per validare un form, ad esempio, è meglio inserirlo così:
$form['#attached']['js'][] = drupal_get_path('module', 'nome_modulo') . '/js/script.js';
dove $form è l'array che contiene la struttura del form stesso; così facendo sfruttiamo al meglio il meccanismo di Drupal per il caching dei form. Per quanto riguarda i temi la questione è più semplice, basta infatti aggiungere una riga nel file .info che descrive il tema a Drupal:
scripts[] = js/script.js
Qualunque sia la strada scelta quello che si ottiene è una riga del tipo:
nella sezione head della pagina (ovviamente l'attributo src punterà alla posizione corretta del file). Oltre al nostro script vengono caricati nella pagina almeno questi altri:
* misc/jquery.js?v=1.4.4 * misc/jquery.once.js?v=1.2 * misc/drupal.js * misc/jquery.cookie.js?v=1.0 Il parametro v identifica la versione della libreria da cui si evince che il file di jQuery usato in Drupal 7 è molto indietro rispetto all'ultima versione stabile; nel caso ci interessino funzionalità più recenti possiamo usare il modulo jquery_update (http://drupal.org/project/jquery_update) per portarlo alla versione 1.5.2, ma non di più. Gli altri file aggiunti sono i due plugin di jQuery once e cookie e la libreria con tutte le funzioni di base drupal.js.