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

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

38 голосов | спросил J-Fiz 3 J0000006Europe/Moscow 2011, 20:11:34

3 ответа


28

Вы можете переопределить theme_search_results () или theme_search_result ().

Первая - это функция темы, которая вызывается для страницы результата поиска, а вторая - функция темы, которая вызывается для рендеринга одного результата. Обе функции темы используют файл шаблона ( search-results.tpl.php в первом случае hook_search_page () , но это крючок, используемый модулем, который интегрируется с модулем поиска, а не с модулем, который хочет изменить страницу результатов для результатов, возвращаемых другим модуль.
Кроме того, на Drupal 7 каждая функция темы использует функцию препроцесса, которая в этом случае будет hook_preprocess_search_results () и hook_preprocess_search_result () . Они полезны в том случае, когда вам просто нужно изменить значение переданного файла шаблона.

ответил kiamlaluno 3 J0000006Europe/Moscow 2011, 21:43:38
18

В Drupal 7 вы используете ...

... чтобы возиться с информацией, отображаемой в результатах.

И вы используете ...

... для настройки разметки результатов.

Пример

Это пример использования тизера типа контента в качестве результата поиска. Следующий фрагмент находится в шаблоне theme.php темы

/**
 * Выполняет template_preprocess_search_result
 * @param type $ vars
 * /
функция MYTHEME_preprocess_search_result (& $ vars) {
  $ node = $ vars ['result'] ['node'];
  if ($ node-> nid) {//если результатом является узел, мы можем загрузить тизер
    $ vars ['teaser'] = node_view ($ node, 'teaser');
  }
}

Этот фрагмент является файлом search-result.tpl.php:

& л; статьи >
  <? php if ($ teaser): //для узлов мы можем использовать тизер в качестве результата поиска?>
    <? php print drupal_render ($ teaser); ? >
  <? php else: //для других результатов мы используем значение по умолчанию из основного модуля поиска?>
    <? php print render ($ title_prefix); ? >
    <h3> <a href = "<? php print $ url; & quot; & quot; & quot; <& php; print $ title; ? > & Lt; /а > & Lt; /h3 >
    <? php print render ($ title_suffix); ? >
    <? php if ($ snippet):?>
      <p> <? php print $ snippet; ? > & Lt; /р >
    <? php endif; ? >
  <? php endif; ? >
  <? php if ($ info):?>
    <footer> <? php print $ info; ? > & Lt; /нижний колонтитул >
  <? php endif; ? >
& Lt; /& статья GT;
ответил batigolix 7 42013vEurope/Moscow11bEurope/MoscowThu, 07 Nov 2013 14:58:37 +0400 2013, 14:58:37
9

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

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

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

ответил woop 6 J000000Friday12 2012, 01:59:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132