Как мне настроить страницу результатов поиска?

39

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

J-физ
источник

Ответы:

28

Вы можете переопределить theme_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 и выше позволяет модулям реализовать hook_search_page () , но это ловушка, используемая модулем, который интегрируется с модулем поиска, а не от модуля, который хочет изменить страницу результатов для результатов, возвращаемых другим модуль.
Кроме того, в Drupal 7 каждая функция темы использует функцию предварительной обработки, которая в этом случае была бы hook_preprocess_search_results () и hook_preprocess_search_result () . Они полезны в том случае, если вам просто нужно отредактировать значение того, что передается в файл шаблона.

киамлалуно
источник
Есть ли способ поиска результатов по теме с использованием представлений или панелей?
янв
@jan Вы можете заменить страницу поиска видом, используя открытые фильтры.
kiamlaluno
@kiamlaluno, я надеялся, что смогу задать тему поиска по умолчанию для drupal, используя представления. Потому что я не буду использовать открытые фильтры, а просто использую опцию поиска по умолчанию.
янв
@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>
batigolix
источник
1
Лучшее объяснение в этой теме.
Цифровой скупщик
9

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

Модуль Display Suite имеет замечательный способ взять под контроль результаты поиска: он позволит вам легко использовать тизеры в результатах поиска. Это руководство для сопровождающего модуля, которое фокусируется на использовании его для результатов поиска.

Как всегда с Drupal, есть множество способов сделать то же самое. Мне понравился этот метод, потому что он позволил мне разбить результаты по типу контента.

Woop
источник
1
Я знаю, что это ответ 2012 года, но я заметил, что на странице модуля написано, что функциональность поиска теперь исключена в Drupal 8. Это говорит о том, что это может быть не лучшим решением для Drupal 7, если вы хотите какой-то проверки будущего. , Это не проверено мной, хотя, только один на один.
ja_him