Answers:
这是您的选择:
$scripts
变量将在那里可用,您可以对其进行更改。这可能会有些棘手。您还可以看到qmulti如何做到这一点。jQuery Update也以类似的方式做到这一点。请记住,切换到更高版本的jQuery可能会破坏Drupal核心和贡献,这是jQuery Multi解决的问题。因此,如果执行此操作,请确保您没有损坏任何东西。这样做的好处是,您只需要加载所需的jQuery,而使用jQuery Multi则可以同时加载两者。
有一个模块jQuery multi。该模块允许您multiple versions of jQuery run parallel
在Drupal实例上使用。它alias
为每个实例提供一个,可用于调用该版本的jquery。
请发现此代码可能有帮助,请将此代码放入您的template.php
function MYTHEME_preprocess_page(&$vars) {
$scripts = drupal_add_js();
if (in_array('page-media-photos', $vars['template_files'])) {
unset($scripts['all']['module']['PATH_OF_JS_NEED_TO_REMOVE']);
}
$vars['scripts'] = drupal_get_js('header', $scripts);
}
PATH_OF_JS_NEED_TO_REMOVE给出js的路径,例如:sites / all / modules / og / og.js
您可以通过drupalmoff在此处显示的jquery_update_jquery_replace()
特定页面(例如在中hook_library_alter()
)调用:
<?php
/**
* Implements hook_module_implements_alter().
*/
function your_module_module_implements_alter(&$implementations, $hook){
if( $hook == 'library_alter' ){
$group = $implementations ['your_module'];
unset($implementations ['your_module']);
$implementations ['your_module'] = $group;
}
}
/**
* Implements hook_library_alter().
*/
function your_module_library_alter(&$javascript, $module) {
if( $module === 'system' && current_path() == 'path/to/page' ) {
// Make sure we inject either the minified or uncompressed version as desired.
$min = variable_get('jquery_update_compression_type', 'min') == 'none' ? '' : '.min';
$cdn = variable_get('jquery_update_jquery_cdn', 'none');
$path = drupal_get_path('module', 'jquery_update');
$version = '1.7';
jquery_update_jquery_replace($javascript, $cdn, $path, $min, $version);
}
}
?>
我的解决方案是JQUERY_UPDATE_REPLACE_PATH
在jquery_update
加载常量之前更改常量:
<?php
/**
* Replace jQuery files on specified paths (fix for IE 6&7 - jQuery bug: bugs.jquery.com/ticket/6498)
*/
// if (array_search($_GET['q'], array('my_page')) !== FALSE) {
if (arg(0) == 'node' && arg(1) == '123') {
define('JQUERY_UPDATE_REPLACE_PATH', 'sites/all/libraries/jquery/1.5.2');
}
?>
因此,可以将其添加到.module文件的最开始(该文件之前已加载jquery_update
,也可以尝试在设置文件中添加)。