jQuery更新モジュールには、このスクリプトが含まれています。
<script type="text/javascript" src="/sites/all/modules/jquery_update/replace/jquery.min.js?6"></script>
ファンシーボックスを使用している特定のテンプレートファイルを除いて、すべてのページでこれが必要です。jQueryの新しいバージョンが必要です。
上記のスクリプトをpage-media-photos.tpl.phpの$scripts
変数にのみ入れることからjQueryの更新を除外する必要があります。どうすればこれを達成できますか?
オプションは次のとおりです。
$scripts
変数ここで利用可能になり、変更できます。これは少しトリッキーになる場合があります。 qmultiがこれを行う方法 も確認できます。jQueryUpdateも同様の方法でこれを行います。より高いjQueryバージョンにスワップすると、Drupal coreおよびcontribの一部が壊れる可能性があります。これはjQuery Multiが解決する問題です。そのため、これを行う場合は何も壊していないことを確認してください。ここでの利点は、必要なjQueryをロードするだけであり、jQuery Multiでは両方をロードすることです。
モジュール jQuery multi があります。このモジュールを使用すると、multiple versions of jQuery run parallel
on drupalインスタンス。インスタンスごとにalias
を提供し、そのバージョンのjqueryを呼び出すために使用できます。
Jqueryupdateやビューの管理ページ(たとえば)で問題が発生した場合は、ctoolsのDevバージョンをインストールしてみてください。
このコードが役立つかもしれないので、このコードを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はexの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
の前に読み込まれる)の先頭に追加するか、設定ファイルで試すことができます。