Jak zaktualizować jQuery do najnowszej wersji, którą mogę pobrać?

33

Korzystam z Drupal 7, który domyślnie używa jQuery 1.4? Jak mogę go zaktualizować do najnowszej wersji (obecnie 1.7)?

Karmacoma
źródło
1
Nie chcę używać modułu, chcę manuel.
Karmacoma,
Ręczna aktualizacja jQuery w Drupal byłaby bardzo skomplikowana i ryzykowna nawet dla najbardziej doświadczonych programistów Drupala. Powinieneś skorzystać z porady Clive'a i skorzystać z aktualizacji jQuery.
sheena_d
Idę do pliku misc-jquery.js przez ftp i zastępuję nowy kod jquery. Dobrze?
Karmacoma,
O ile mi wiadomo, misc-jquery.js nie jest dokładnie tą samą kopią wersji jquery. Jednak według git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , powinno być również wsparcie 1.7.
AyeshK,
@Patrick Kenny Nie sądzę, żeby to było poprawne - mogę wybrać jquery 1.8 za pomocą jquery_update na dziś
dou1ejack

Odpowiedzi:

44

Jednym ze sposobów jest zainstalowanie wersji dev z jQuery aktualizacji , która daje możliwość korzystania z jQuery 1.7 (odwiedzając stronę ustawień na http://mysite.com/admin/config/development/jquery_update ).

Uważaj jednak, obecnie wiadomo, że łamie JavaScript w innym miejscu witryny (na przykład menu rozwijane widżetów na stronie Zarządzaj polami nie będzie już działać). Jeśli jesteś przygotowany, aby to naprawić i inne drobne niedogodności, jest to prawdopodobnie najlepszy wybór. Należy również zauważyć, że korzystanie z wersji deweloperskiej modułu nie jest pozbawione ryzyka, ponieważ szanse na błędy są znacznie większe niż przy użyciu określonej wersji.

Jeśli chcesz to zrobić ręcznie, będziesz mieć dużo podstawowego kodu javascript do przepisania, aby Twoja strona działała zgodnie z oczekiwaniami; jQuery zmienił strasznie dużo między wersją 1.4 / 1.5 a 1.7, więc wiele podstawowych kodów javascript Drupala po prostu nie będzie z nim działać.

Jeśli chcesz po prostu dodać wersję jQuery 1.7, prawdopodobnie mógłbyś ją zaimplementować hook_js_alter(), rozbroić podstawowy plik jQuery i dodać własny w to miejsce:

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']);
}

Gdy to zrobisz, otwórz Narzędzia programistyczne / Firebug, a zobaczysz wszystkie zmiany, które musisz wprowadzić, aby reszta strony JS działała :)

AKTUALIZACJA

Najnowsza wersja aktualizacji jQuery ( 7.x-2.3 w momencie pisania) pozwoli teraz zaktualizować jQuery do wersji 1.8. Bardzo fajny.

Moduł jQuery Multi to kolejna opcja, dzięki goronowi za wskazanie tego w komentarzach. Jak zauważa, ten moduł ma stabilną wersję i nie zepsuje żadnego istniejącego javascript.

Clive
źródło
Thaks, stary !!! Szukałem tego przez jakiś czas! W moim przypadku chciałem po prostu załadować inną wersję jQuery dla każdego motywu, więc właśnie zastąpiłem MYMODULE_js_alter dla MYTHEME_js_alter i drupal_get_path ('theme', 'MYTHEME') dla drupal_get_path ('module', 'MYMODULE')
victmo
1
Uwaga, Drupal posiada własny zestaw plików JavaScript napisanych do pracy ze starym jQuery i niezgodnym z jQuery 1.7 lub 1.8. Najnowsza aktualizacja jQuery zapewnia pliki zastępcze dla nich.
Pierre Buyle,
1
Potrzebujesz wersji deweloperskiej modułu, wersja stabilna nie ma opcji 1.7
Clive
2
jQuery Multi to kolejna opcja, która nie wymaga wersji deweloperskiej i nie zepsuje żadnego JS. Może dodać to jako opcję lub usunąć „Jedyny sposób”?
goron
1
@goron Dobra uwaga, dzięki. Część tej odpowiedzi jest prawdopodobnie przestarzała, postaram się ją wkrótce zaktualizować
Clive
4

Należy również rozważyć użycie modułu wielu modułów jquery, który umożliwia korzystanie z więcej niż jednej wersji modułu jquery. Świetny moduł, używam go do Druapl 7 i 6 we wszystkich moich projektach.

Rreiss
źródło
2

Inspirowane dokumentacją hook_js_alter , następujące prace. Możesz umieścić go w szablonie theme.php. Wymaga to użycia innego motywu administratora, aby uniknąć konfliktu z rdzeniem Drupala, i zakłada, że ​​plik jquery-1.8.3.min.js znajduje się w folderze o nazwie „js” w motywie (dostosuj do koloru).

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';

}

Shaun Dychko
źródło
Wymaganie innego motywu administratora nie jest tak naprawdę rozwiązaniem, chyba że możesz podać listę motywów, które będą działać z tą metodą. Domyślam się, że byłoby bardzo, bardzo mało. Ponadto te motywy najprawdopodobniej wykorzystałyby także jQuery, co prawie na pewno doprowadziłoby do problemów, które moduł aktualizacji jQuery został specjalnie zaprojektowany do naprawy
Clive
0

Nie jestem pewien, jaki jest twój cel, ale kiedy potrzebowałem konkretnej wersji do tworzenia niestandardowych modułów, mogłem to zrobić przy użyciu jQuery.noConflict .

Jest to dodatkowa praca w porównaniu z modułem jquery_update (co OP nie wydaje się mieć nic przeciwko), ale oznacza to, że nie musisz się martwić, czy zepsujesz całą instalację drupal.

double1ejack
źródło