Bagaimana cara saya memperbarui jQuery ke versi terbaru yang dapat saya unduh?

33

Saya menggunakan Drupal 7, yang menggunakan jQuery 1.4 sebagai default? Bagaimana saya bisa memperbaruinya ke versi terbaru (saat ini 1.7)?

Karmacoma
sumber
1
Saya tidak ingin menggunakan modul, ingin manuel.
Karmacoma
Memutakhirkan jQuery di Drupal secara manual akan sangat rumit dan berisiko bahkan untuk pengembang Drupal yang paling berpengalaman. Anda harus mengikuti saran Clive dan menggunakan Pembaruan jQuery.
sheena_d
Saya pergi ke file misc-jquery.js via ftp dan mengganti kode jquery baru. Kanan?
Karmacoma
misc-jquery.js bukan salinan yang sama persis dari versi jquery, sejauh yang saya tahu. Namun, menurut git, drupalcode.org/project/jquery_update.git/tree/refs/head/… , seharusnya ada dukungan 1.7 juga.
AyeshK
@ Patrick Kenny Saya rasa itu tidak benar - saya dapat memilih jquery 1.8 menggunakan jquery_update hari ini
doub1ejack

Jawaban:

44

Salah satu caranya adalah dengan menginstal versi dev dari Pembaruan jQuery , yang memberi Anda pilihan untuk menggunakan jQuery 1.7 (dengan mengunjungi halaman pengaturan di http://mysite.com/admin/config/development/jquery_update ).

Namun berhati-hatilah, saat ini diketahui melanggar JavaScript di tempat lain di situs (misalnya dropdown widget pada halaman Kelola Bidang tidak lagi berfungsi). Jika Anda siap untuk memperbaikinya, dan gangguan kecil lainnya, ini mungkin taruhan terbaik Anda. Anda juga harus mencatat bahwa menggunakan versi dev dari sebuah modul bukan tanpa risiko, karena kemungkinan bug memiliki jauh lebih tinggi daripada menggunakan rilis tertentu.

Jika Anda ingin melakukannya secara manual maka Anda akan memiliki banyak kode javascript inti untuk ditulis ulang agar situs Anda berfungsi seperti yang diharapkan; jQuery mengubah banyak sekali antara versi 1.4 / 1.5 dan 1.7 sehingga banyak kode javascript Drupal inti tidak akan berfungsi dengannya.

Jika Anda hanya ingin memasukkan versi jQuery 1.7 maka Anda mungkin bisa mengimplementasikan hook_js_alter(), menghapus file inti jQuery, dan menambahkan sendiri di tempat itu:

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']);
}

Setelah Anda selesai melakukannya, buka Developer Tools / Firebug dan Anda akan melihat semua perubahan yang perlu Anda buat untuk membuat sisa JS situs berfungsi :)

MEMPERBARUI

Versi terbaru dari pembaruan jQuery ( 7.x-2.3 pada saat penulisan) sekarang akan memungkinkan Anda untuk memperbarui jQuery ke v1.8. Sangat keren.

The jQuery multi modul pilihan lain, berkat goron untuk menunjukkan bahwa di komentar. Saat ia juga mencatat, modul ini memiliki rilis yang stabil dan tidak akan merusak javascript yang ada.

Clive
sumber
Terima kasih !!! Saya sudah mencari ini sebentar! Dalam kasus saya, saya hanya ingin memuat versi yang berbeda dari jQuery per tema, jadi saya hanya mengganti MYMODULE_js_alter untuk MYTHEME_js_alter dan drupal_get_path ('tema', 'MYTHEME') untuk drupal_get_path ('module', 'MYMODULE')
victmo
1
Hati-hati, Drupal dilengkapi dengan set file JavaScript sendiri yang ditulis untuk bekerja dengan jQuery lama dan tidak kompatibel dengan jQuery 1.7 atau 1.8. Pembaruan jQuery terbaru menyediakan file pengganti untuk ini.
Pierre Buyle
1
Anda memerlukan versi dev dari modul, versi stabil tidak memiliki opsi untuk 1.7
Clive
2
jQuery Multi adalah pilihan lain, yang tidak memerlukan versi dev, dan tidak akan merusak JS apa pun. Mungkin menambahkannya sebagai opsi atau menghapus "Satu-satunya cara"?
goron
1
@goron Poin bagus, terima kasih. Sebagian dari jawaban ini mungkin sudah usang sekarang saya akan mencoba memperbaruinya segera
Clive
4

Anda juga harus mempertimbangkan untuk menggunakan modul multi jquery yang memungkinkan Anda untuk menggunakan lebih dari satu versi jquery. Modul hebat, saya menggunakannya untuk Druapl 7 dan 6 di semua proyek saya.

rreiss
sumber
2

Terinspirasi oleh dokumentasi hook_js_alter , berikut ini berfungsi. Anda dapat menempatkannya di template.php tema Anda. Ini mengharuskan Anda menggunakan tema admin yang berbeda untuk menghindari konflik dengan inti Drupal, dan mengasumsikan bahwa jquery-1.8.3.min.js terletak di folder yang disebut 'js' di dalam tema (sesuaikan sesuai).

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';

}

Shaun Dychko
sumber
Membutuhkan tema admin yang berbeda bukanlah solusi, kecuali Anda dapat memberikan daftar tema yang dapat digunakan dengan metode ini. Dugaan saya adalah akan sangat, sangat sedikit. Ditambah tema-tema itu akan sangat mungkin juga untuk menggunakan jQuery, yang tentunya akan mengarah pada masalah-masalah yang diperbaiki secara khusus oleh modul pembaruan jQuery
Clive
0

Saya tidak yakin apa tujuan Anda di sini, tetapi ketika saya membutuhkan versi spesifik untuk pengembangan modul khusus, saya dapat melakukannya dengan menggunakan jQuery.noConflict .

Ini adalah pekerjaan tambahan dibandingkan dengan modul jquery_update (yang tampaknya OP tidak keberatan), tetapi itu berarti Anda tidak perlu khawatir tentang apakah Anda akan mengacaukan seluruh instalasi drupal Anda.

keraguan1jack
sumber