Come faccio ad aggiornare jQuery all'ultima versione che posso scaricare?


33

Sto usando Drupal 7, che utilizza jQuery 1.4 come impostazione predefinita? Come posso aggiornarlo all'ultima versione (attualmente 1.7)?


1
Non voglio usare il modulo, voglio manuel.
Karmacoma,

L'aggiornamento manuale di jQuery in Drupal sarebbe molto complicato e rischioso anche per gli sviluppatori Drupal più esperti. Dovresti seguire i consigli di Clive e utilizzare jQuery Update.
sheena_d

Vado al file misc-jquery.js tramite ftp e sostituisco il nuovo codice jquery. Destra?
Karmacoma,

misc-jquery.js non è esattamente la stessa copia di una versione di jquery, per quanto ne so. Tuttavia, secondo git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , dovrebbe esserci anche un supporto 1.7.
AyeshK,

@Patrick Kenny Non penso che sia corretto - Posso selezionare jquery 1.8 usando jquery_update a partire da oggi
doub1ejack

Risposte:


44

Un modo è installare la versione dev di jQuery Update , che ti dà la possibilità di usare jQuery 1.7 (visitando la pagina delle impostazioni su http://mysite.com/admin/config/development/jquery_update ).

Attenzione, al momento è noto che JavaScript non è presente altrove nel sito (ad esempio, il menu a discesa del widget in una pagina Gestisci campi non funzionerà più). Se sei pronto a risolvere questo, e altri piccoli fastidi, questa è probabilmente la soluzione migliore. Dovresti anche notare che l'uso della versione dev di un modulo non è privo di rischi, poiché le probabilità che abbia dei bug sono molto più alte rispetto all'utilizzo di una versione specifica.

Se vuoi farlo manualmente, avrai un sacco di codice javascript di base da riscrivere per far funzionare il tuo sito come previsto; jQuery ha cambiato moltissimo tra la versione 1.4 / 1.5 e 1.7, quindi gran parte del codice javascript Drupal di base semplicemente non funzionerà con esso.

Se vuoi semplicemente inserire una versione di jQuery 1.7, probabilmente potresti implementare hook_js_alter(), disinserire il file jQuery di base e aggiungerne uno al suo posto:

function MYMODULE_js_alter(&$js) {
  $path = drupal_get_path('module', 'MYMODULE') . '/path/to/jquery.1.7.js';

  // Copy the current jQuery file settings and change
  $js[$path] = $js['misc/jquery.js'];

  // Update necessary settings
  $js[$path]['version'] = 1.7;
  $js[$path]['data'] = $path;

  // Finally remove the original jQuery
  unset($js['misc/jquery.js']);
}

Una volta che lo hai fatto, apri gli Strumenti per gli sviluppatori / Firebug e vedrai tutte le modifiche che dovrai apportare per far funzionare il resto del sito JS :)

AGGIORNARE

L'ultima versione dell'aggiornamento jQuery ( 7.x-2.3 al momento della stesura) consentirà ora di aggiornare jQuery alla v1.8. Molto bello.

Il modulo jQuery Multi è un'altra opzione, grazie a Goron per averlo sottolineato nei commenti. Come osserva anche, questo modulo ha una versione stabile e non romperà alcun javascript esistente.


Grazie amico !!! Lo cerco da un po '! Nel mio caso volevo solo caricare una versione diversa di jQuery per tema, quindi ho appena sostituito MYMODULE_js_alter per MYTHEME_js_alter e drupal_get_path ('tema', 'MYTHEME') per drupal_get_path ('module', 'MYMODULE')
victmo

1
Attenzione, Drupal viene fornito con un proprio set di file JavaScript scritti per funzionare con un vecchio jQuery e non compatibile con jQuery 1.7 o 1.8. L'ultimo aggiornamento di jQuery fornisce file di sostituzione per questi.
Pierre Buyle,

1
Hai bisogno della versione dev del modulo, la versione stabile non ha l'opzione per 1.7
Clive

2
jQuery Multi è un'altra opzione, che non richiede la versione dev, e non romperà alcun JS. Forse aggiungerlo come opzione o rimuovere "L'unico modo"?
Goron,

1
@goron Ottimo punto, grazie. Parte di questa risposta è probabilmente obsoleta ora proverò ad aggiornarla presto
Clive

4

Dovresti anche considerare di usare il multi modulo jquery che ti permette di usare più di una versione di jquery. Ottimo modulo, lo sto usando per Druapl 7 e 6 su tutti i miei progetti.


2

Ispirato alla documentazione di hook_js_alter , i seguenti lavori. Puoi inserirlo nel template.php del tuo tema. Ciò richiede l'utilizzo di un diverso tema di amministrazione per evitare conflitti con il core di Drupal e si presuppone che jquery-1.8.3.min.js si trovi in ​​una cartella chiamata 'js' all'interno del tema (regolare per adattarsi).

function [theme_machine_name]_js_alter(&$javascript) {

  $javascript['misc/jquery.js']['data'] = drupal_get_path('theme', '[theme_machine_name]') .
    '/js/jquery-1.8.3.min.js';

  $javascript['misc/jquery.js']['version'] = '1.8.3';

}


La richiesta di un tema diverso di amministrazione non è davvero una soluzione, a meno che non è possibile fornire un elenco dei temi che saranno lavorare con questo metodo. Suppongo che sarebbe molto, molto pochi. Inoltre, è molto probabile che anche questi temi utilizzino jQuery, il che porterebbe sicuramente ai problemi che il modulo di aggiornamento jQuery è stato appositamente progettato per risolvere
Clive

0

Non sono sicuro di quale sia il tuo scopo qui, ma quando avevo bisogno di una versione specifica per lo sviluppo di moduli personalizzati sono stato in grado di farlo utilizzando jQuery.noConflict .

È un lavoro extra rispetto al modulo jquery_update (che all'OP non sembra importare), ma significa che non devi preoccuparti se rovinerai l'intera installazione di Drupal.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.