Як налаштувати сторінку результатів пошуку?


39

Я налаштував вигляд тизера моїх типів вмісту та перегляду сторінки. Тепер мені потрібно скористатися видом тизера для сторінки результатів пошуку. За замовчуванням Drupal показує повний безладний текст для кожного результату, мені потрібно мати можливість налаштувати вигляд кожного з типів вмісту. Я не хочу змінювати, ЯК drupal отримує результати, як саме їх відображає.

Відповіді:


28

Ви можете змінити тему_search_results () або theme_search_result ().

Перша - це тема теми, яка викликається для сторінки результатів пошуку, а друга - функція теми, яка викликається для надання єдиного результату. Обидві функції теми використовують файл шаблону ( search-results.tpl.php у першому випадку, search-result.tpl.php у другому випадку).

search-result.tpl.php використовуватиметься $info_split['type']в Drupal 6, який містить тип вузла. В останній версії Drupal 7 $info_split['type']вже не передається, але search-result.tpl.php все-таки отримує $result['node'], якщо пошук здійснюється за вузлами; $result['node']->typeце тип вмісту вузла.

Зауваживши, що Drupal 7 і новіші версії дозволяють модулям реалізовувати hoke_search_page () , але це гачок, який використовується модулем, який інтегрується з модулем пошуку, а не від модуля, який хоче змінити сторінку результатів на результати, повернені іншою модуль.
Також у Drupal 7 кожна тематична функція використовує функцію попередньої обробки, яка в даному випадку буде moll_preprocess_search_results () та ho__proprocess_search_result () . Вони корисні у випадку, якщо вам просто потрібно буде відредагувати значення переданого у файл шаблону.


Чи є спосіб тематизувати результати пошуку за допомогою переглядів чи панелей?
січня 12

@jan Ви можете замінити сторінку пошуку на представлення, використовуючи відкриті фільтри.
kiamlaluno

@kiamlaluno, я сподівався, що я зможу випробувати параметр пошуку за замовчуванням для drupal, використовуючи перегляди. Тому що я не буду використовувати відкриті фільтри та просто використовувати параметр пошуку за замовчуванням.
січня 12

@jan Якщо ви використовуєте перегляд, вся сторінка пошуку замінюється переглядом. Ось чому вам потрібно виставити принаймні фільтр перегляду: це те, що користувачі використовуватимуть для введення пошукових термінів. Перегляд - це лише перелік вузлів, і фільтри використовуються для фільтрації вузлів, які будуть показані на сторінці.
kiamlaluno

@kiamlaluno ви праві. Чому я про це не думав !! Спасибі
січня

18

У Drupal 7 ви використовуєте ...

... поцікавитися інформацією, відображеною в результатах.

І ти використовуєш ...

... налаштувати розмітку результатів.

Приклад

Це приклад того, як використовувати тизер типу вмісту як результат пошуку. Наступний фрагмент міститься в template.php теми

/**
 * 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'); 
  }
}

Цей фрагмент - це файл 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
Найкраще пояснення цієї теми.
digitgopher

9

Нещодавно я витратив багато часу, працюючи з результатами пошуку на веб-сайті архітектури Drupal 7, і вирішив використовувати модуль Display Suite .

Модуль Display Suite має чудовий метод контролю над результатами пошуку: він дозволить вам легко використовувати тизери в результатах пошуку. Це підручник , який підтримує модуль, який фокусується на використанні його для результатів пошуку.

Як і завжди з Drupal, існує безліч способів зробити те саме. Мені сподобався цей метод, оскільки він дозволив мені розбити результати за типом вмісту.


1
Я знаю, що ця відповідь є з 2012 року, але зауважую, що на сторінці модуля написано, що функція пошуку зараз виключена в Drupal 8. Це говорить про те, що це може бути не найкращим способом прийняття для Drupal 7, припускаючи, що ви хочете отримати якесь подальше підтвердження . Це я не перевіряв сам, хоч лише головою вгору.
ja_him
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.