Korzystam z Drupal 7, który domyślnie używa jQuery 1.4? Jak mogę go zaktualizować do najnowszej wersji (obecnie 1.7)?
Korzystam z Drupal 7, który domyślnie używa jQuery 1.4? Jak mogę go zaktualizować do najnowszej wersji (obecnie 1.7)?
Odpowiedzi:
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.
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';
}
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.