我正在使用Drupal 7,它默认使用jQuery 1.4?如何将其更新到最新版本(当前为1.7)?
我正在使用Drupal 7,它默认使用jQuery 1.4?如何将其更新到最新版本(当前为1.7)?
Answers:
一种方法是安装开发人员版的jQuery的更新(通过访问设置页面,从而使您能够使用jQuery 1.7的选项http://mysite.com/admin/config/development/jquery_update)。
不过请注意,目前已知会在网站的其他位置破坏JavaScript(例如,“管理字段”页面上的小部件下拉列表将不再起作用)。如果您准备好解决此问题以及其他任何小麻烦,这可能是您最好的选择。您还应该注意,使用模块的开发版本并非没有风险,因为其存在错误的机会比使用特定版本的机会要高得多。
如果您想手动执行此操作,那么您将需要重写许多核心javascript代码以使您的网站按预期工作;jQuery在1.4 / 1.5和1.7版本之间进行了很多改动,因此很多核心Drupal javascript代码根本无法使用。
如果您只想插入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的多模块是另一种选择,这要归功于goron指出这一点的意见。正如他还指出的那样,该模块具有稳定的发行版,不会破坏任何现有的javascript。
受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.noConflict来实现。
与jquery_update模块(OP似乎并不在意)相比,这是一些额外的工作,但这确实意味着您不必担心是否要弄乱整个drupal安装。