2011-07-04 40 views
7

Tôi muốn thêm tính năng Forrst Sap vào trang web Drupal 7.Cách thêm JS vào Drupal 7

Thứ nhất, điều này liên quan đến việc thêm tập lệnh jquery.sap.js vào trang web mà tôi có thể thực hiện thông qua chủ đề của tôi .info tệp. Tôi hiểu rằng tôi phải thay thế jQuery đó bây giờ được đặt tên để tránh xung đột với các thư viện Javascript khác như Prototype. Tất cả các mã của bạn mà hy vọng sẽ sử dụng jQuery như $ nên được gói trong một bối cảnh bên ngoài như vậy.

(function ($) { 
    // All your code here 
}(jQuery)); 

Nhưng tôi không chắc chắn về cách chỉ định hành vi Drupal cho mã này?

Thứ hai, tôi phải thêm đoạn code inline:

$('#item').sap({ 
    distanceFromTheTop: 0 
}); 

Tôi tin rằng tôi có thể làm điều này với drupal_add_js nhưng một lần nữa tôi không chắc chắn làm thế nào để đi về vấn đề này thông qua các tập tin template.php?

Cảm ơn sự giúp đỡ của bạn!

Trả lời

9

Dưới đây là một chút mã soạn sẵn để thêm tệp javascript vào Drupal.

(function ($) { 
    Drupal.behaviors.[myName] = { 
    attach: function(context, settings) { 

     //Begin my code 
     var myVarOne, 
      myVarTwo; 

     $('#item').sap({ 
     distanceFromTheTop: 0 
     }); 
    //I'm done with my code 

    } 
    }; 
})(jQuery); 

drupal_add_js() là một chức năng tuyệt vời để sử dụng trong mã để thêm các file js vì họ sẽ được tổng hợp theo ngữ cảnh vì vậy một số trang có thể có kịch bản js rất lớn nhưng họ sẽ không được nạp trong cache tập tin js tổng hợp trên trang khác tải.

Nếu bạn cần kịch bản trên everypage hoặc nếu nó nhỏ sau đó thêm nó thông qua các tập tin [TEMPLATE_NAME] .info bằng cách sử dụng scripts[] = myscript.js hoặc nếu thư mục template của bạn có một thư mục con cho các kịch bản gọi là js sau đó sử dụng scripts[] = js/myscript.js

tái bút: Có một cái nhìn tại drupal.stackexchange.com

+1

Trong Drupal 7, thông thường bạn không cần sử dụng drupal_add_ {js, css}() nữa. Sử dụng #attached để thay thế (làm việc với các biểu mẫu và các mảng kết xuất trang). – tamasd

+0

+1 cho câu trả lời và nhận xét bằng cách đề cập đến '# attached', nhưng tôi vẫn thiếu một tài liệu tốt cho việc sử dụng [' # attached'] (http://api.drupal.org/api/drupal/ nhà phát triển% 21topics% 21forms_api_reference.html/7 # được đính kèm)! Nhưng đây là một hướng dẫn tuyệt vời cho "[Quản lý JavaScript trong Drupal 7] (http://drupal.org/node/756722)" từ Drupal.org. – Sk8erPeter

2

tôi đã sử dụng các dòng sau để thêm thành công mã javascript vào trang web drupal tôi:

drupal_add_js(drupal_get_path('module', 'my_module') .'/js/mycode.js', array('type' => 'file', 'scope' => 'footer')); 

Và dòng sau để vượt qua một dữ liệu biến đơn giản đến bao gồm trên /js/MyCode .js:

drupal_add_js(array('my_module' => array('key' => 'value', ''))), 'setting'); 

biến ở trên có thể truy cập trong mycode.js qua như sau:

Drupal.settings.my_module.key; 

PS: trong khi bạn đang cố gắng để bao gồm các tập tin .js qua template.php, tôi sử dụng thành công mã trên trong một mô-đun tùy chỉnh.

Tôi không chắc liệu giải pháp chính xác của tôi có hiệu quả với chiến lược của bạn hay không.

Các vấn đề liên quan