Không thể thêm JavaScript trên một trang


7

Tôi đang sử dụng cái này, nhưng tôi không hiểu tại sao nó không hoạt động.

if ($_SERVER['REQUEST_URI'] == '/node/1') { 
  drupal_add_js(drupal_get_path('theme', 'sanskrit').'/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js', 'inline'); 
  drupal_add_js('/sites/all/themes/sanskrit/scripts/scripts/jquery.nivo.slider.pack.js');   
} 

Điều tôi muốn làm là thêm các tệp JavaScript cụ thể khi người dùng đang xem trang trước.

Câu trả lời:


17

Điều này nên làm điều đó:

function MYTHEME_preprocess_page(&$vars) {
  if (drupal_is_front_page()) {
    drupal_add_js(drupal_get_path('theme', 'MYTHEME') . '/MYSCRIPTS/myscript.js');
    $vars['scripts'] = drupal_get_js();
  }
}

FYI: Bạn sẽ sử dụng drupal_get_jstrong trường hợp bất kỳ mô-đun nào cũng đang sử dụng hook_preprocess_pagevà tự thiết lập các tập lệnh mới.

Ngoài ra, tôi sẽ không chỉ thêm một phiên bản jQuery mới hơn trong willy nilly. Hãy thử jQuery Update hoặc jQuery Multi


này, tôi đang gặp lỗi trong chức năng dòng này MYTHEME_pre process_page (& $ vars) {tôi nên làm gì
Jaiffable

Bạn đang nhận được Undefined functionlỗi? Tôi đoán nó nên drupal_is_front_page()giống như câu trả lời của tôi dưới đây.
ninjasc Corner

Rất tiếc ... Tôi đã chỉnh sửa câu trả lời của mình. Đó là một trong những chức năng tôi LUÔN gõ sai. Cảm ơn đã chỉ ra điều đó!
Chapabu

4

Luân phiên: Mô-đun Thư viện JavaScript . Nó không cho phép bạn giới hạn tập lệnh ở trang đầu, nhưng chắc chắn dễ dàng hơn nhiều so với việc viết mô-đun chỉ để tải tập lệnh.


3

Nếu bạn đang làm việc với một mô-đun, bạn đặt nó vào hook_init như thế này:

function mymodule_init() {
  if(drupal_is_front_page()) {
    drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js'); 
    drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/scripts/jquery.nivo.slider.pack.js');
  }
}

Nếu bạn muốn đặt nó trong pre process_page:

function yourTheme_preprocess_page(&$vars) {
  if(drupal_is_front_page()) {
     drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js'); 
     drupal_add_js(drupal_get_path('theme', 'sanskrit') . '/sites/all/themes/sanskrit/scripts/scripts/jquery.nivo.slider.pack.js');
     $vars['scripts'] = drupal_get_js();
  }
}

Hoặc bạn có thể đặt nó trong tệp theme.info nếu bạn đang xây dựng chủ đề của riêng mình.

scripts[] = scripts/jquery.nivo.slider.pack.js

2

Phương tiện tốt nhất và đơn giản nhất để hoàn thành việc thêm javascript vào trang đầu là thông qua ngữ cảnhbối cảnh thêm tài sản . Nội dung và bối cảnh thêm tài sản cũng có thể xuất được và bạn có thể tạo một tính năng để sử dụng sau này.

Tìm hiểu thêm về bối cảnh thêm tài sản :

Mô-đun này sẽ thêm một phản ứng trong ngữ cảnh để thêm các tệp chủ đề, mô-đun hoặc thư mục tùy chỉnh vào (các) trang của bạn.

Bạn đã bao giờ muốn nhanh chóng thêm một tập tin css vào một chủ đề? Bao gồm một tệp js chỉ trên một trang (hoặc phần?)

Làm cho việc sử dụng nhiều tệp CSS trở nên dễ dàng với mô-đun này và khai thác sức mạnh của Ngữ cảnh trong chủ đề của bạn!


1

Nó không phải là làm việc bởi vì bạn đang concatenating chuỗi trở về từ drupal_get_path('theme', 'sanskrit')với '/sites/all/themes/sanskrit/scripts/jquery-1.4.3.min.js'; giả sử bạn không cài đặt Drupal trong thư mục con của thư mục gốc của máy chủ, tên tệp bạn đang chuyển đến drupal_add_js()là các trang web / all / Themes / sanskrit / bbbsites / all / Themes / sanskrit / scripts / jquery-1.4.3. min.js.

Mã bạn nên sử dụng là mã sau đây.

if ($_SERVER['REQUEST_URI'] == '/node/1') {
  $theme_path = drupal_get_path('theme', 'sanskrit'); 
  drupal_add_js($theme_path . '/scripts/jquery-1.4.3.min.js', 'inline'); 
  drupal_add_js($theme_path . '/scripts/jquery.nivo.slider.pack.js');   
} 

Như những người khác đã chỉ ra, để kiểm tra xem người dùng có đang xem trang trước hay không, bạn chỉ cần gọi drupal_is_front_page () .

Các đường dẫn như trang web / tất cả / chủ đề không bao giờ được mã hóa cứng trong mã chủ đề / mô-đun, vì một chủ đề có thể được cài đặt sites/<domain.name>/themes/<theme.name>và mô-đun có thể được cài đặt sites/<domain.name>/modules/<module.name>. Giả sử rằng cài đặt Drupal được sử dụng cho tên miền blog.example.com, mô-đun Lượt xem có thể được cài đặt trong các trang web / blog.example.com / mô-đun / lượt xem và một chủ đề như chủ đề Whitebull có thể được cài đặt trong các trang web / blog. example.com/theme/whitebull.

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.