Làm cách nào tôi có thể chèn hộp tìm kiếm trong page.tpl?


27

Làm cách nào tôi có thể chèn hộp tìm kiếm (khối tìm kiếm) trong chủ đề của mình theo chương trình?

Câu trả lời:


39

Theo thẻ của bạn, bạn đang tìm kiếm một giải pháp D7. Các Drupal 7 page.tpl.php không có search_box biến $ nữa. Tuy nhiên, bạn có thể thêm nó trong một hàm tiền xử lý trong template.php:

<?php
/*
 *  Preprocess page.tpl.php to inject the $search_box variable back into D7.
 */
function MYTHEME_preprocess_page(&$variables){
  $search_box = drupal_render(drupal_get_form('search_form'));
  $variables['search_box'] = $search_box;
}

Sau đó, bạn chỉ cần in biến trong page.tpl.php của bạn:

<?php print $search_box; ?>

Bạn cũng có thể sử dụng module_invoke, nhưng bạn không nên có logic php trong các tệp mẫu:

<?php
  $block = module_invoke('search', 'block_view', 'search');
  print render($block); 
?>

Cảm ơn, tôi nên đặt khối mã thứ ba ở đâu? (Trực tiếp trong page.tpl.php HOẶC trong template.php và sau đó truy cập nó từ page.tpl?)
Nick.h

1
Khối thứ ba nên được đặt trong page.tpl.php. Là một tốc ký, bạn cũng có thể sử dụng: "print render (module_invoke ('search', 'block_view', 'search'));"
Bala Clark

2
Để tránh "Cảnh báo nghiêm ngặt: Chỉ nên chuyển các biến bằng tham chiếu trong [tên chủ đề] _pre process_page () (dòng xx của [tên chủ đề] /template.php)." cảnh báo theme_pre process_page của bạn phải như sau: / * * Triển khai theme_pre process_page (). * / function [tên chủ đề] _pre process_page (& $ biến) {$ search_form = drupal_get_form ('search_form'); $ search_box = drupal numnder ($ search_form); $ biến ['search_box'] = $ search_box; }
kbrinner

7

Làm điều đó đúng cách thay vào đó và sử dụng khối.
Các yếu tố mã hóa bên trong page.tpl, là IMHO một trong những điều vẫn còn nổi xung quanh kể từ "ngày xưa tốt đẹp".

Sử dụng hệ thống khối thay thế; nó cho phép bạn linh hoạt hơn nữa trên đường. Bạn cũng có thể muốn kiểm tra mô-đun Blockify .

Mô-đun này cho thấy một số yếu tố Drupal cốt lõi là các khối.



1

Bạn cũng có thể sử dụng hệ thống khối và thêm khối biểu mẫu tìm kiếm vào trang trong

Quản trị> Cấu trúc> Khối: Biểu mẫu tìm kiếm

ví dụ: để đặt trong menu điều hướng, đặt khối trong khu vực

"Dẫn đường"

và sau đó căn chỉnh với CSS.

ví dụ: để đặt bên phải menu điều hướng:

#navigation #block-search-form{
  position: absolute;
  right: 10px;
  top: 0;
}

Điều này sẽ làm việc, nhưng câu hỏi đã đề cập đến một giải pháp lập trình.
timofey.com
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.