Làm cách nào để jquery hoạt động trên Drupal 7 - cho người mới


8

Tôi đã đọc nhiều hướng dẫn trực tuyến về cách làm cho jquery hoạt động trên drupal 7. Mặc dù có nhiều dòng mã và ví dụ, nhưng điều tôi không thể tìm thấy là đoạn mã nào được đặt ở đâu (có thể rõ ràng đối với hầu hết các nhà phát triển)

Vì vậy, những gì tôi làm là

1) Tôi tạo một khối tùy chỉnh mới

2) Ở đó từ UI drupal, tôi viết mã của mình

(function ($) {

  $(document).ready(function(){

    // jquery here

  });
})(jQuery);

3) Tôi hiển thị khối, nhưng jquery không được tải.

Tôi đang đọc rằng tôi nên đặt mã này vào các tệp mẫu, tệp chủ đề, tệp css, tệp thông tin và tôi không biết gì nữa!

Tôi không rõ chính xác trong tập tin nào và tôi phải đặt đoạn mã trên để làm việc đúng cách?

Có lời khuyên nào không?

Cảm ơn nhiều!

Câu trả lời:


11

Một vài điều ở đây:

  1. Nếu bạn có thể tránh nhập javascript và PHP vào trang web thông qua giao diện người dùng, nó có thể sẽ giúp bạn tránh khỏi những rắc rối. Nếu bạn không có lựa chọn thay thế thì không sao nhưng đây là một số lý do tại sao nó không phải là một ý tưởng tuyệt vời: https://drupal.stackexchange.com/a/2512/10729 (lưu ý rằng đó là nhằm vào PHP, không phải js mà là hầu hết các điểm vẫn đứng cho js). Các ví dụ về mô-đun có một ví dụ về việc tạo ra các khối tùy chỉnh.
  2. Để đính kèm js, nếu bạn muốn nó trên tất cả các trang, bạn có thể thêm nó vào tệp thông tin của chủ đề. Nếu bạn chỉ muốn nó ở một số nơi, tốt nhất nên sử dụng drupal_add_js () để nó chỉ có trên các trang cần thiết. Để đính kèm hành vi js vào biểu mẫu, bạn cũng có thể sử dụng thuộc tính #attached trên các mục biểu mẫu của mình.
  3. Nếu bạn sử dụng $ (tài liệu). Đã (), nó sẽ kích hoạt javascript của bạn khi tải trang, tuy nhiên nếu trang được cập nhật qua ajax thì javascript của bạn sẽ không kích hoạt lại, vì vậy đánh dấu mới sẽ không bị ảnh hưởng bởi bất kỳ javascript nào của bạn Là. Để xử lý những trường hợp này, bạn nên sử dụng các hành vi drupal thay vì tài liệu sẵn sàng.

Ví dụ:

(function ($) {
  Drupal.behaviors.yourBehaviorName = {
    attach: function (context, settings) {
      // Do your thing here.
    }
  };
})(jQuery);

Tôi khuyên bạn nên đọc các trang này:
Quản lý JavaScript trong Drupal 7
Làm việc với JavaScript và jQuery


7

Trong .js của bạn chèn như mã này;

(function ($) {  

  Drupal.behaviors.themename = {

    attach: function (context, settings) {            

     // All our js code here
     alert('Hello jQuery');
     // end our js code

   }

 };})(jQuery);

Trong chủ đề của bạn template.php tạo hook_preprocess_html sau đó sử dụng drupal_add_js

function themename_preprocess_html(&$variables) {
  drupal_add_js(drupal_get_path('theme', 'themename') . '/js/your.js', array( 
    'scope' => 'footer', 
    'weight' => '15' 
  ));
}

Chỉ cần thay đổi tên


1
Lưu ý rằng điều này sẽ thêm javascript vào mỗi trang, điều này có thể hoặc không mong muốn.
rooby

1
Hehe có, điều này sẽ thêm javascript vào mỗi trang. Chỉ cần để @apdr thử điều đó và kiểm tra kiến ​​thức của anh ấy
sibiru

2
nếu bạn muốn tải js trên mỗi trang thông qua chủ đề, sẽ không có ý nghĩa hơn khi chỉ liệt kê tệp trong tệp .info của chủ đề?
Jimajamma

3

tập tin .js của bạn sẽ trông như thế này:

(function ($) {
    Drupal.behaviors.cdgi = {
        attach: function(context) {

        //your code

        }
    }
}(jQuery));

sử dụng drupal_add_js () trong mô-đun của bạn để thêm tệp này vào Drupal. tài liệu tham khảo tốt ở đâyở đây .

xóa bộ nhớ cache thường xuyên;)

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.