Làm cách nào để tùy chỉnh trang kết quả tìm kiếm?


39

Tôi đã tùy chỉnh chế độ xem trêu ghẹo các loại nội dung của tôi và chế độ xem trang. Bây giờ tôi cần sử dụng chế độ xem trêu ghẹo cho trang kết quả tìm kiếm. Theo mặc định, Drupal hiển thị một mớ hỗn độn văn bản đầy đủ cho mỗi kết quả, tôi cần có thể tùy chỉnh giao diện của từng loại cho mỗi loại nội dung. Tôi không muốn thay đổi CÁCH drupal nhận được kết quả, chỉ là cách nó hiển thị chúng.

Câu trả lời:


28

Bạn có thể ghi đè theme_search_results () hoặc theme_search_result ().

Đầu tiên là chức năng chủ đề được gọi cho trang kết quả tìm kiếm, trong khi thứ hai là chức năng chủ đề được gọi để hiển thị một kết quả duy nhất. Cả hai hàm chủ đề đều sử dụng tệp mẫu ( search-results.tpl.php trong trường hợp đầu tiên, search-result.tpl.php trong trường hợp thứ hai).

search-result.tpl.php sẽ sử dụng $info_split['type']trong Drupal 6, chứa loại nút. Trong phiên bản Drupal 7 mới nhất, $info_split['type']sẽ không được thông qua nữa, nhưng search-result.tpl.php vẫn nhận được $result['node'], trong trường hợp tìm kiếm được thực hiện cho các nút; $result['node']->typesau đó là loại nội dung của nút.

Để nhận thấy rằng Drupal 7 và cao hơn, cho phép các mô-đun triển khai hook_search_page () , nhưng đó là một hook được sử dụng bởi một mô-đun tích hợp với mô-đun Tìm kiếm, không phải từ mô-đun muốn thay đổi trang kết quả để trả về kết quả mô-đun.
Ngoài ra, trên Drupal 7, mỗi chức năng chủ đề sử dụng chức năng tiền xử lý, trong trường hợp này sẽ là hook_pre process_search_results ()hook_pre process_search_result () . Chúng rất hữu ích trong trường hợp bạn chỉ cần chỉnh sửa giá trị của những gì được truyền vào tệp mẫu.


Có cách nào để kết quả tìm kiếm chủ đề bằng cách sử dụng lượt xem hoặc bảng điều khiển không?
Tháng Một

@jan Bạn có thể thay thế trang tìm kiếm bằng chế độ xem bằng các bộ lọc được hiển thị.
kiamlaluno

@kiamlaluno, tôi đã hy vọng tôi có thể chủ đề tùy chọn tìm kiếm mặc định cho drupal bằng cách sử dụng lượt xem. Bởi vì tôi sẽ không sử dụng các bộ lọc bị lộ và chỉ sử dụng tùy chọn tìm kiếm mặc định.
Tháng Một

@jan Nếu bạn sử dụng chế độ xem, toàn bộ trang tìm kiếm sẽ được thay thế bằng chế độ xem. Đó là lý do tại sao bạn cần hiển thị ít nhất một bộ lọc chế độ xem: Đó là những gì người dùng sẽ sử dụng để nhập cụm từ tìm kiếm. Một khung nhìn chỉ là một danh sách các nút và các bộ lọc được sử dụng để lọc các nút sẽ được hiển thị trong trang.
kiamlaluno

@kiamlaluno bạn nói đúng. Tại sao tôi không nghĩ về nó !! Cảm ơn
Tháng Một

18

Trong Drupal 7, bạn sử dụng ...

... để tinker với thông tin hiển thị trong kết quả.

Và bạn sử dụng ...

... Để tùy chỉnh đánh dấu kết quả.

Thí dụ

Đây là một ví dụ về cách sử dụng lời trêu ghẹo của loại nội dung làm kết quả tìm kiếm. Đoạn mã tiếp theo đi vào template.php của chủ đề

/**
 * Implements template_preprocess_search_result
 * @param type $vars
 */
function MYTHEME_preprocess_search_result(&$vars) {
  $node = $vars['result']['node'];
  if ($node->nid) { // if the result is a node we can load the teaser
    $vars['teaser'] = node_view($node, 'teaser'); 
  }
}

Đoạn mã này là tệp search-result.tpl.php:

<article>
  <?php if ($teaser) : // for nodes we can use the teaser as search result ?>
    <?php print drupal_render($teaser); ?>
  <?php else : // for other results we use the default from core search module ?>  
    <?php print render($title_prefix); ?>
    <h3><a href="<?php print $url; ?>"><?php print $title; ?></a></h3>
    <?php print render($title_suffix); ?>
    <?php if ($snippet) : ?>
      <p><?php print $snippet; ?></p>
    <?php endif; ?>
  <?php endif; ?>
  <?php if ($info): ?>
    <footer><?php print $info; ?></footer>
  <?php endif; ?>
</article>

1
Giải thích tốt nhất về chủ đề này.
digitgopher

9

Gần đây tôi đã dành rất nhiều thời gian để làm việc với các kết quả tìm kiếm trên trang web kiến ​​trúc Drupal 7 và quyết định sử dụng mô-đun Display Suite .

Mô-đun Display Suite có một phương pháp tuyệt vời để kiểm soát kết quả tìm kiếm: Nó sẽ cho phép bạn dễ dàng sử dụng các lời trêu ghẹo của mình trong kết quả tìm kiếm. Đây là một hướng dẫn của người duy trì mô-đun tập trung vào việc sử dụng nó cho kết quả tìm kiếm.

Như mọi khi với Drupal, có nhiều cách khác nhau để làm điều tương tự. Tôi thích phương pháp này vì nó cho phép tôi chia ra kết quả theo loại nội dung.


1
Tôi biết câu trả lời này là từ năm 2012, nhưng tôi nhận thấy rằng trên trang mô-đun có nói rằng chức năng tìm kiếm hiện đã bị loại trừ trong Drupal 8. Điều này cho thấy đây có thể không phải là điều tốt nhất để áp dụng cho Drupal 7, giả sử bạn muốn có một bằng chứng nào đó trong tương lai . Điều đó không được tự mình kiểm tra, chỉ là một cái đầu lên.
ja_him
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.