Как мне обновить jQuery до последней версии, которую я могу скачать?

33

Я использую Drupal 7, который по умолчанию использует jQuery 1.4? Как я могу обновить его до последней версии (в настоящее время 1.7)?

Karmacoma
источник
1
Я не хочу использовать модуль, хочу Мануэль.
Кармакома
Обновление jQuery в Drupal вручную было бы очень сложным и рискованным даже для самых опытных разработчиков Drupal. Вы должны принять совет Клайва и использовать обновление jQuery.
sheena_d
Я иду в файл misc-jquery.js через ftp и заменяю новый код jquery. Правильно?
Кармакома
Насколько я знаю, misc-jquery.js не является точно такой же копией jquery-версии. Однако, согласно git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , должна быть поддержка и 1,7.
AyeshK
@Patrick Кенни я не думаю , что это правильно - я могу выбрать JQuery 1.8 с использованием jquery_update на сегодняшний день
doub1ejack

Ответы:

44

Один из способов установить версию Dev из JQuery Update , который дает вам возможность использовать JQuery 1,7 (посетив страницу настроек на http://mysite.com/admin/config/development/jquery_update ).

Осторожно, однако, в настоящее время известно, что он нарушает JavaScript в других местах сайта (например, раскрывающийся список виджетов на странице «Управление полями» больше не будет работать). Если вы готовы исправить это и любые другие мелкие неприятности, это, вероятно, ваш лучший выбор. Следует также отметить, что использование версии dev модуля не без рисков, так как шансы на наличие ошибок намного выше, чем при использовании определенного выпуска.

Если вы хотите сделать это вручную, тогда вам придется переписать основной код javascript, чтобы ваш сайт работал должным образом; jQuery очень сильно изменился между версиями 1.4 / 1.5 и 1.7, поэтому большая часть основного кода Javascript Drupal просто не будет работать с ним.

Если вы хотите просто добавить версию jQuery 1.7, вы можете реализовать ее hook_js_alter(), сбросить основной файл jQuery и добавить свой собственный файл вместо него:

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

Как только вы это сделаете, откройте Developer Tools / Firebug, и вы увидите все изменения, которые вам нужно сделать, чтобы заставить остальную часть сайта работать JS :)

ОБНОВИТЬ

Последняя версия обновления jQuery ( 7.x-2.3 на момент написания) теперь позволяет обновлять jQuery до v1.8. Очень круто.

Модуль jQuery Multi - это еще один вариант, благодаря Горону, который указал на это в комментариях. Как он также отмечает, этот модуль имеет стабильную версию и не сломает какой-либо существующий JavaScript.

Клайв
источник
Спасибо человек !!! Я искал это некоторое время! В моем случае я просто хотел загрузить другую версию jQuery для каждой темы, поэтому я просто заменил MYMODULE_js_alter для MYTHEME_js_alter и drupal_get_path ('theme', 'MYTHEME') для drupal_get_path ('module', 'MYMODULE')
victmo
1
Осторожно, Drupal поставляется с собственным набором файлов JavaScript, написанных для работы со старым jQuery и несовместимых с jQuery 1.7 или 1.8. Последнее обновление jQuery предоставляет заменяющие файлы для них.
Пьер Буйль
1
Вам нужна версия модуля dev, стабильная версия не имеет опции для 1.7
Clive
2
jQuery Multi - это еще одна опция, которая не требует версии dev и не сломает JS. Может, добавить его в качестве опции или убрать «Единственный путь»?
Горон
1
@ Goron Хорошо, спасибо. Некоторые из этого ответа, вероятно, устарели, сейчас я постараюсь обновить его в ближайшее время
Клайв
4

Вам также следует рассмотреть возможность использования мульти-модуля jquery, который позволяет вам использовать более одной версии jquery. Отличный модуль, я использую его для Druapl 7 и 6 во всех моих проектах.

rreiss
источник
2

Вдохновленный документацией hook_js_alter , работает следующее. Вы можете поместить его в template.php вашей темы. Это требует, чтобы вы использовали другую тему администратора, чтобы избежать конфликта с ядром Drupal, и предполагает, что jquery-1.8.3.min.js находится в папке с именем 'js' внутри темы (отрегулируйте в соответствии с требованиями).

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

}

Шон Дычко
источник
Требование другой темы администратора на самом деле не является решением, если вы не можете предоставить список тем, которые будут работать с этим методом. Я думаю, что это будет очень, очень мало. Кроме того, эти темы, скорее всего, также будут использовать jQuery, что в значительной степени определенно приведет к проблемам, которые специально предназначен для обновления модулем обновления jQuery
Clive
0

Я не уверен, что ваша цель здесь, но когда мне нужна была конкретная версия для разработки пользовательских модулей, я смог сделать это с помощью jQuery.noConflict .

Это некоторая дополнительная работа по сравнению с модулем jquery_update (который OP, похоже, не возражает), но это означает, что вам не нужно беспокоиться о том, собираетесь ли вы испортить всю установку drupal.

doub1ejack
источник