Search Api и views_get_view() или views_get_view_results(), как получить значения полей во views?

Создал представление на основе индекcа Search Api.
Пытаюсь получить результаты view с полями, так как нужны именно поля объектов, ограниченные выводом указанной в аргументах страницы.

<?php$myview = views_get_view('test');
$myview->set_display('page_2');
$myview->set_current_page(1); 
$myview->pre_execute();
$myview->execute();
var_dump($myview->result); 
?>

В итоге в $myview->result содержится объект-сущность, по всей видимости, search_api(?), такой структуры
[0]=>
object(stdClass)#2965 (2) {
["entity"]=>
int(1032)
["_entity_properties"]=>
array(3) {
["search_api_relevance"]=>
float(1)
["search_api_excerpt"]=>
string(0) ""
["search_api_id"]=>
string(4) "1032"
}
}

view_get_view_result даёт такой же результат

Пытался загрузить в таком случае сущность через entity_load и EntityFieldQuery, но не могу понять, какой тип сущности указывать.
entity_load('search_api', array(1032), array(), FALSE) выдаёт ошибку.
entity_load('search_api_index', array(1032), array(), FALSE) выдаёт пустой массив.

Как получить значения полей индексированных нод?
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
afi13
@afi13
Search api view возвращает только айдишники сущностей. В твоем случае результат это массив объектов. В каждом объекте:
'entity' - айдишник твоей сущности (nid если ты ищешь по нодам)
'_entity_properties' - это массив с доп. инфой, значение релевантности для этой сущности по данному запросу, отрывки текста в которых нашлась искомая фраза. И "search_api_id" - это айдишник сущности.
Для того чтобы получить ноду достаточно сделать node_load(); для каждой или лучше собрать все айдишники в массив и сделать node_load_multiple();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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