Làm cách nào để cập nhật jQuery lên phiên bản mới nhất mà tôi có thể tải xuống?


33

Tôi đang sử dụng Drupal 7, sử dụng jQuery 1.4 làm mặc định? Làm cách nào để cập nhật lên phiên bản mới nhất (hiện 1.7)?


1
Tôi không muốn sử dụng mô-đun, muốn manuel.
Karmacoma

Nâng cấp jQuery trong Drupal theo cách thủ công sẽ rất phức tạp và rủi ro ngay cả đối với các nhà phát triển Drupal dày dạn nhất. Bạn nên nghe lời khuyên của Clive và sử dụng Cập nhật jQuery.
sheena_d

Tôi đi đến tệp misc-jquery.js qua ftp và thay thế mã jquery mới. Đúng?
Karmacoma

misc-jquery.js không phải là bản sao chính xác của phiên bản jquery, theo như tôi biết. Tuy nhiên, theo git, drupalcode.org/project/jquery_update.git/tree/refs/heads/ , cũng có thể có hỗ trợ 1.7.
AyeshK

@Patrick Kenny Tôi không nghĩ đó là chính xác - Tôi có thể chọn jquery 1.8 bằng cách sử dụng jquery_update cho đến ngày hôm nay
myst1ejack

Câu trả lời:


44

Một cách là cài đặt phiên bản dev của jQuery Update , cung cấp cho bạn tùy chọn sử dụng jQuery 1.7 (bằng cách truy cập trang cài đặt tại http://mysite.com/admin/config/development/jquery_update ).

Mặc dù vậy, hãy cẩn thận, hiện tại đã biết phá vỡ JavaScript ở nơi khác trong trang web (ví dụ: trình đơn thả xuống tiện ích trên trang Quản lý trường sẽ không còn hoạt động nữa). Nếu bạn đã sẵn sàng để khắc phục điều đó và bất kỳ phiền toái nhỏ nào khác, đây có lẽ là lựa chọn tốt nhất của bạn. Bạn cũng nên lưu ý rằng việc sử dụng phiên bản dev của mô-đun không có rủi ro, vì khả năng nó có lỗi cao hơn rất nhiều so với sử dụng một bản phát hành cụ thể.

Nếu bạn muốn làm thủ công thì bạn sẽ có rất nhiều mã javascript cốt lõi để viết lại để làm cho trang web của bạn hoạt động như mong đợi; jQuery đã thay đổi rất nhiều giữa phiên bản 1.4 / 1.5 và 1.7, do đó, rất nhiều mã javascript Drupal cốt lõi sẽ không hoạt động với nó.

Nếu bạn muốn thả phiên bản jQuery 1.7 thì có lẽ bạn có thể thực hiện hook_js_alter(), bỏ đặt tệp jQuery lõi và thêm tệp của riêng bạn vào vị trí của nó:

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

Khi bạn đã hoàn thành việc đó, hãy mở Công cụ dành cho nhà phát triển / Fireorms và bạn sẽ thấy tất cả các thay đổi bạn sẽ cần thực hiện để làm cho phần còn lại của trang web hoạt động :)

CẬP NHẬT

Phiên bản mới nhất của bản cập nhật jQuery ( 7.x-2.3 tại thời điểm viết) giờ đây sẽ cho phép bạn cập nhật jQuery lên v1.8. Rất tuyệt.

Các jQuery nhiều mô-đun là một tùy chọn, nhờ Goron đã chỉ ra rằng trong các ý kiến. Như ông cũng lưu ý, mô-đun này có một bản phát hành ổn định và sẽ không phá vỡ bất kỳ javascript nào hiện có.


Thaks người !!! Tôi đã tìm kiếm điều này trong một thời gian! Trong trường hợp của tôi, tôi chỉ muốn tải một phiên bản khác của jQuery mỗi chủ đề, vì vậy tôi chỉ cần thay MYMODULE_js_alter cho MYTHEME_js_alter và drupal_get_path ( 'chủ đề', 'MYTHEME') cho drupal_get_path ( 'module', 'MYMODULE')
victmo

1
Coi chừng, Drupal đi kèm với tập hợp các tệp JavaScript riêng được viết để hoạt động với một jQuery cũ và không tương thích với jQuery 1.7 hoặc 1.8. Bản cập nhật jQuery mới nhất cung cấp các tệp thay thế cho những thứ này.
Pierre Buyle

1
Bạn cần phiên bản dev của mô-đun, phiên bản ổn định không có tùy chọn cho 1.7
Clive

2
jQuery Multi là một tùy chọn khác, không yêu cầu phiên bản dev và sẽ không phá vỡ bất kỳ JS nào. Có thể thêm nó dưới dạng tùy chọn hoặc xóa "Cách duy nhất"?
goron

1
@goron Điểm tốt, cảm ơn. Một số câu trả lời này có lẽ đã lỗi thời. Tôi sẽ cố gắng cập nhật sớm
Clive

4

Bạn cũng nên xem xét để sử dụng mô-đun đa jquery cho phép bạn sử dụng nhiều hơn một phiên bản của jquery. Mô-đun tuyệt vời, tôi đang sử dụng nó cho Druapl 7 và 6 cho tất cả các dự án của tôi.


2

Lấy cảm hứng từ tài liệu hook_js_alter , các công việc sau đây. Bạn có thể đặt nó trong template.php của chủ đề. Điều này yêu cầu bạn sử dụng một chủ đề quản trị khác để tránh xung đột với lõi Drupal và giả định rằng jquery-1.8.3.min.js nằm trong một thư mục có tên 'js' trong chủ đề (điều chỉnh cho phù hợp).

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

}


Yêu cầu một chủ đề quản trị khác không thực sự là một giải pháp, trừ khi bạn có thể cung cấp một danh sách các chủ đề sẽ hoạt động với phương pháp này. Tôi đoán là nó sẽ rất, rất ít. Ngoài ra, các chủ đề đó cũng rất có thể sẽ sử dụng jQuery, điều này chắc chắn sẽ dẫn đến các vấn đề mà mô-đun cập nhật jQuery được thiết kế đặc biệt để khắc phục
Clive

0

Tôi không chắc mục đích của bạn là gì ở đây, nhưng khi tôi cần một phiên bản cụ thể để phát triển mô-đun tùy chỉnh, tôi đã có thể làm như vậy bằng cách sử dụng jQuery.noConflict .

Đó là một số công việc bổ sung so với mô-đun jquery_update (mà OP dường như không bận tâm), nhưng điều đó có nghĩa là bạn không phải lo lắng về việc liệu bạn có làm hỏng toàn bộ cài đặt drupal của mình không.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.