it-swarm-vi.com

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

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ị toàn bộ nội dung lộn xộn lộn xộn 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ỉ cách nó hiển thị chúng.

39
J-Fiz

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']->type Sau đó 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ả cho kết quả được trả về bởi mô-đun khác.
[.__.] 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 cho tệp mẫu.

28
kiamlaluno

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>
18
batigolix

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 một trang web kiến ​​trúc Drupal 7 và đã 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 bởi 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.

9
woop