Thêm JavaScript vào một loại nội dung cụ thể


9

Tôi muốn biết cách tốt nhất để thêm tệp JavaScript vào một trang cụ thể dựa trên loại nội dung. Ví dụ, tôi muốn thêm điều này:

<script type='text/javascript' src='http://maps.google.com/maps/api/js?sensor=false'></script>

Cho đến nay, những gì tôi đã làm là sử dụng cách này để thêm vào loại nội dung cụ thể của mình. Đối với loại nội dung map_page, tôi thêm hai dòng mã bên dưới vào trang - map_page.tpl.php.

drupal_add_js("http://maps.google.com/maps/api/js?sensor=false", 'external');
$scripts = drupal_get_js();

Có cách nào khác tốt hơn không? nếu có thể có thể đưa ra một số ví dụ, hiện tại không thực sự hiểu rõ ...

Câu trả lời:


6

Tôi không thể nhận xét về tương đương Drupal 7 thích hợp, nhưng trong các trang web Drupal 6, tôi thực hiện điều này trong template_pre process_page .

Tôi sẽ có một số logic để đưa ra quyết định (dựa trên arg()hoặc page_manager_get_current_page()từ các bảng), và sau đó thêm vào $vars["scripts"]tập lệnh bên ngoài. Tôi trả trước để tôi không gặp rắc rối phụ thuộc với bất kỳ tập lệnh cục bộ nào.

Thỉnh thoảng tôi cũng sẽ thiết lập một khu vực mới được gọi là $global_scriptssuy nghĩ như Google API và SWFObject mà tôi muốn tải từ CDN và điều này sẽ được in ra trước $scriptstrong mẫu trang.

Thành thật mà nói, mặc dù tôi thường có tất cả JS trên tất cả các trang để các tệp được lưu trữ.


6

Vì Drupal sẽ không cho phép bạn xác định lại template_preprocess_node(vì nó đã được xác định trong node.module), tôi đã thêm một hàm tiền xử lý trong mô-đun tùy chỉnh của mình:

function mymodule_preprocess_node(&$vars) {
  if ($vars['type'] == 'my-node-type') {
    drupal_add_js(drupal_get_path('module', 'mymodule') . '/myjs.js');
  }
}

Tôi đã sử dụng preprocess_nodechứ không phải preprocess_pagevì nó dễ dàng hơn để đến loại nút. Nếu bạn thực sự tham chiếu một tệp javascript, thì nó sẽ được tự động lưu vào bộ đệm ( xem phần Thông số ).


2

bạn cũng có thể sử dụng kiểm tra hook_node_view cho loại nội dung và sau đó thêm js theo cách bạn đang làm.

HOẶC LÀ

Nếu bạn có một trường xuất ra thông tin sẽ sử dụng JS, hãy sử dụng bộ tiền xử lý ở đó để thêm js, do đó, bao gồm js phụ thuộc vào trường hiển thị bản đồ thay vì loại nội dung.


0

Một giải pháp đơn giản là chỉ cần đặt add_js:

  drupal_add_js('drupal_get_path('module', 'mymodule') . '/myjs.js');

trong trang / nút template.php.

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.