jQueryをダウンロード可能な最新バージョンに更新するにはどうすればよいですか?


33

デフォルトとしてjQuery 1.4を使用するDrupal 7を使用していますか?最新バージョン(現在1.7)に更新するにはどうすればよいですか?


1
私はモジュールを使用したくない、操作したい。
カルマコマ

DrupalでjQueryを手動でアップグレードすることは、最も熟練したDrupal開発者にとっても非常に複雑で危険です。Cliveのアドバイスを受けて、jQuery Updateを利用する必要があります。
sheena_d

FTP経由でmisc-jquery.jsファイルにアクセスし、新しいjqueryコードを置き換えます。右?
カルマコマ

私の知る限り、misc-jquery.jsはjqueryバージョンとまったく同じではありません。ただし、git、drupalcode.org / project / jquery_update.git / tree / refs / heads /…によると、1.7のサポートもあるはずです。
AyeshK

@Patrickケニー私はそれが正しいだとは思わない-私は、今日のようjquery_updateを使用してjQueryの1.8を選択することができます
doub1ejack

回答:


44

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を壊すことはありません。


サックスマン!!! 私はしばらくこれを探していました!私の場合、テーマごとに異なるバージョンのjQueryをロードしたかったので、MYMODULE_js_alterをMYTHEME_js_alterに、drupal_get_path( 'theme'、 'MYTHEME')をdrupal_get_path( 'module'、 'MYMODULE')に
置き換えました

1
Drupalには、古いjQueryで動作するように記述され、jQuery 1.7または1.8と互換性のない独自のJavaScriptファイルセットが付属しています。最新のjQuery Updateは、これらの代替ファイルを提供します。
ピエールバイル

1
あなたはモジュールのDEVのバージョンを必要とする、安定したバージョンが1.7のためのオプションがありません
クライヴ

2
jQuery Multiはもう1つのオプションです。これは、devバージョンを必要とせず、JSを壊しません。オプションとして追加するか、「唯一の方法」を削除するのでしょうか?
ゴロン

1
@goron良い点、ありがとう。この回答の中には、今、私はすぐにそれを更新しようとするでしょう、おそらく廃止されました
クライヴ

4

また、jqueryの複数のバージョンを使用できるようにするjquery multiモジュールの使用も検討する必要があります。すばらしいモジュールです。すべてのプロジェクトで、Druapl 7および6に使用しています。


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のを使用することも可能性が高いだろう
クライヴ

0

ここにあなたの目的が何なのかわかりませんが、カスタムモジュール開発に特定のバージョンが必要になったとき、jQuery.noConflictを使用してそれを行うことができました。

jquery_updateモジュール(OPは気にしないようです)に比べて余分な作業がありますが、drupalインストール全体を台無しにするかどうかを心配する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.