ฉันใช้ Drupal 7 ซึ่งใช้ jQuery 1.4 เป็นค่าเริ่มต้น ฉันจะอัปเดตเป็นเวอร์ชั่นล่าสุด (ปัจจุบันคือ 1.7) ได้อย่างไร
ฉันใช้ Drupal 7 ซึ่งใช้ jQuery 1.4 เป็นค่าเริ่มต้น ฉันจะอัปเดตเป็นเวอร์ชั่นล่าสุด (ปัจจุบันคือ 1.7) ได้อย่างไร
คำตอบ:
วิธีหนึ่งคือการติดตั้งรุ่น devของjQuery ปรับปรุงซึ่งจะช่วยให้คุณเลือกที่จะใช้ jQuery 1.7 (โดยไปที่หน้าการตั้งค่าที่http://mysite.com/admin/config/development/jquery_update )
แต่ระวังในปัจจุบันเป็นที่ทราบกันดีว่าการทำลาย JavaScript ที่อื่นในไซต์ (ตัวอย่างเช่นการดร็อปดาวน์วิดเจ็ตบนหน้า Manage Fields จะไม่ทำงานอีกต่อไป) หากคุณพร้อมที่จะแก้ไขปัญหานั้นและสิ่งรบกวนเล็กน้อยอื่น ๆ นี่อาจเป็นทางออกที่ดีที่สุดของคุณ คุณควรทราบด้วยว่าการใช้โมดูลรุ่น dev นั้นไม่มีความเสี่ยงเพราะโอกาสในการมีข้อบกพร่องนั้นสูงกว่าการใช้รุ่นที่เฉพาะเจาะจง
หากคุณต้องการทำด้วยตนเองคุณจะมีโค้ดจาวาสคริปต์หลักจำนวนมากเพื่อเขียนใหม่เพื่อให้ไซต์ของคุณทำงานตามที่คาดไว้ jQuery เปลี่ยนล็อตที่น่ากลัวระหว่างเวอร์ชัน 1.4 / 1.5 และ 1.7 ดังนั้นโค้ดจาวาสคริปต์หลักของ Drupal ก็ไม่สามารถใช้งานได้
หากคุณต้องการเพียงแค่ปล่อย jQuery 1.7 ในเวอร์ชันแล้วคุณอาจจะสามารถใช้งานได้hook_js_alter()
ให้ยกเลิกการตั้งค่าไฟล์ core 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']);
}
เมื่อคุณทำเสร็จแล้วให้เปิดเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ / Firebug แล้วคุณจะเห็นการเปลี่ยนแปลงทั้งหมดที่คุณต้องทำเพื่อให้ส่วนที่เหลือของไซต์ JS ทำงานได้ :)
UPDATE
เวอร์ชั่นล่าสุดของการอัปเดต jQuery ( 7.x-2.3ณ เวลาที่เขียน) จะอนุญาตให้คุณอัปเดต jQuery เป็น v1.8 เด็ดมาก
jQuery หลายโมดูลเป็นตัวเลือกอื่นขอบคุณ Goron สำหรับการชี้ให้เห็นว่าในการแสดงความคิดเห็น ในขณะที่เขายังตั้งข้อสังเกตโมดูลนี้มีการเปิดตัวที่มั่นคงและจะไม่ทำลายจาวาสคริปต์ที่มีอยู่
คุณควรพิจารณาใช้ jquery multi module ซึ่งอนุญาตให้คุณใช้ jquery มากกว่าหนึ่งรุ่น สุดยอดโมดูลฉันใช้มันเพื่อ Druapl 7 และ 6 ในทุกโครงการของฉัน
แรงบันดาลใจจากเอกสารประกอบhook_js_alterงานต่อไปนี้ คุณสามารถวางไว้ในแม่แบบของชุดรูปแบบของคุณ สิ่งนี้ต้องการให้คุณใช้ธีมผู้ดูแลระบบที่แตกต่างกันเพื่อหลีกเลี่ยงความขัดแย้งกับแกน 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 ทั้งหมดหรือไม่