デフォルトとしてjQuery 1.4を使用するDrupal 7を使用していますか?最新バージョン(現在1.7)に更新するにはどうすればよいですか?
デフォルトとしてjQuery 1.4を使用するDrupal 7を使用していますか?最新バージョン(現在1.7)に更新するにはどうすればよいですか?
回答:
1つの方法は、開発バージョンのjQuery Updateをインストールすることです。これにより、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インストール全体を台無しにするかどうかを心配する必要はありません。