Search API. Обработка результатов запроса

Приветствую. Сегодня, как вы уже наверняка поняли из названия, мы рассмотрим пример обработки результатов запроса, сделанного с помощью модуля Search API. Запрос я писать не буду, о том, как его сделать, вы можете прочитать в уроке Search API. Пишем свой запрос. Отмечу, что у меня результат запроса хранится в переменной $results.

Найденные ноды, я буду отображать с помощью вью мода teaser:

if (!empty($results)) {
  // Загружаем индекс.
  $index = search_api_index_load('node_index');
  $items = $index->loadItems(array_keys($results['results']));

  $view_mode = 'teaser';
  $entities = entity_view($index->getEntityType(), $items, $view_mode);
  $search_results = render($entities);
    
  // Инициализируем пейджер.
  $items_per_page = 10;
  if ($results['result count'] > $items_per_page) {
    pager_default_initialize($results['result count'], $items_per_page);
    $pager = theme('pager', array('quantity' => 3));
  }
}

Комментарии (6)

Аватар пользователя www.ICaR-Soft.ru
www.ICaR-Soft.ru

Не хочу писать свой движок. Поэтому обратился к Drupal 7.
Но там одни переменные в переменных и ни чего не понятно.
Как вывести картинку в поиск?

Аватар пользователя Виталий
Виталий

Подскажите где почитать, как сделать программный запрос search_api а результат поиска вывеств в заранее приготовленный view. Просто мне не подходит запрос к search через exposed форму, мне нужно сделать собственную форму или вернее модуль с формой, сделать запрос программно, а отобразить желательно во views. У вас в примере в тизере, мне нужно в свой views.

Аватар пользователя Benya
Benya

Вам нужно почитать про views. В двух словах, добавляете во вьюху контекстный фильтр по nid, делаете его multiple, далее пишите запрос к search api, получаете массив nid, а дальше программно выводите вьюху и передаете в контекстный фильтр массив с полученными nid.

Аватар пользователя Виталий
Виталий

Интересный вариант. Спасибо, буду копать.

Аватар пользователя Виталий
Виталий

Сделал как вы предложили вроде работает Форма вверху отправляет программный запрос search_api затем список нод через контекстные параметры отдаётся во views тот же что показывает просто каталог. Поулчается один и тот же vies для поиска и для каталога. Спасиоб за совет.