Đính kèm tập lệnh vào ID nút cụ thể hoặc chế độ xem


7

Trong Drupal 7, bạn có thể sử dụng đoạn mã sau để đính kèm tập lệnh vào một loại nội dung cụ thể:

function THEMENAME_preprocess_node(&$variables) {
  if ($variables['type'] == 'INSERT_CONTENT_TYPE') {

        // include javascript
        drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');

      }

    }

Bạn cần sử dụng mã nào để đính kèm tập lệnh vào ID Node cụ thể hoặc Chế độ xem cụ thể?

Tôi đã thử trao đổi variables['type']với các mặt hàng khác nhau, nhưng dường như không có gì hoạt động.


2
Bạn đang thêm mã này ở đâu? Một số chức năng tiền xử lý?
Shoaib Nawaz

Xin chào Tôi đã cập nhật câu trả lời của mình để làm cho nó rõ ràng hơn
big_smile

Câu trả lời:


14

ID nút:

function THEMENAME_preprocess_node(&$variables) {
  if ($variables['nid'] == 'INSERT_NODE_ID') {
    // include javascript
    drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');
  }
}

Lượt xem:

function THEMENAME_preprocess_views_view(&$variables){
  if ($variables['name'] == 'INSERT_VIEW_MACHINE_NAME') {
    // include javascript
    drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');
  }
}

Cảm ơn! Điều này nhận được tiền thưởng vì nó là giải pháp sạch nhất và hoạt động cho cả nút và chế độ xem.
big_smile

Tôi khá chắc chắn rằng bạn cần "/" trước "INSERT_SCRIPT". (ví dụ: /scripts/custom.js)
Chris Happy

1

Nếu bạn đang sử dụng D6. Hãy thử sử dụng trình tiêm JS để chèn javascript tùy chỉnh vào một trang hoặc xem.


Xin chào Tôi đang sử dụng Drupal 7 và muốn làm điều đó mà không cần thêm mô-đun.
big_smile

0

Thử cái này:

function THEMENAME_preprocess_node($node) {
    if ($node->nid == INSERT_NODE_ID) {
        // include javascript
        drupal_add_js(path_to_theme() . 'INSERT_SCRIPT');
    }
}

0

Nếu tôi hiểu rõ câu hỏi của bạn, tại sao không hiển thị tập lệnh của bạn tích lũy bí danh của chế độ xem hoặc nút hoặc chế độ xem của bạn? (cũng có thể sử dụng ID nút)

Tôi đã thử nghiệm các chức năng này với _preprocess_node(các nút) cũng với _preprocess_page(đối với các khung nhìn và các nút) trong Drupal 67.

đây là nút có ID với _preprocess_node:

function seven_preprocess_node(&$vars) {
    if(isset($_GET['q'])){
        $nodeID = '9';
          if(arg(1) == $nodeID){
              drupal_add_js(path_to_theme() . '/test.js');
          } 
      }
} 

đây là nút có bí danh với _preprocess_node:

function THEMENAME_preprocess_node(&$variables) {
    if(isset($_GET['q'])){
          $path = drupal_get_path_alias($_GET['q']);
          if(preg_match('#test_page#', $path)){
              drupal_add_js(path_to_theme() . '/test.js');
          } 
      }
}

và chức năng này _preprocess_pagesẽ hữu ích cho các nút và / hoặc khung nhìn (bí danh):

function THEMENAME_preprocess_page(&$variables) {
    if(isset($_GET['q'])){
          $path = drupal_get_path_alias($_GET['q']);
          if(preg_match('#test_page#', $path)){
              drupal_add_js(path_to_theme() . '/test.js');
          } 
      }
}

chức năng cuối cùng này chỉ để hiển thị một ví dụ về chức năng tìm kiếm bí danh của chế độ xem / nút hoặc ID nút của bạn:

function THEMENAME_preprocess_page(&$variables) {
    if(isset($_GET['q'])){
        $script = '/test.js';//script name
        $currentPath = drupal_get_path_alias($_GET['q']);//current alias
        $targetPath = '#test_view#';//alias to match (delimiter is #), is for example of your view's page.
        $targetNodeID = '9';//node ID to match
          if(arg(1) == $targetNodeID || preg_match($targetPath, $currentPath)){
              drupal_add_js(path_to_theme() . $script);
          }
     }
}

Tôi hy vọng thông tin sẽ hữu ích.


0

không có gì làm việc cho tôi, vì vậy tôi đã kiểm tra với hook 'tiền xử lý', hoạt động tốt như sau: -

function MYMODULE-or-THEME_preprocess(){
    if(isset($_GET['q'])){
    $nodeID = '232'; //NODE ID TO CHECK
          if(arg(1) == $nodeID){              
     drupal_add_js(drupal_get_path('module', 'MYMODULE').'/js/myscript.js');
         } 
    }
}
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.