Я хотел бы программно выполнить представление (предоставив аргументы) и получить необработанные результаты, без его рендеринга. Является ли это возможным?
Когда я использую $view->preview('default', $args);
это преобразует результаты в HTML. Я знаю, что могу использовать $view->result
для итерации необработанные результаты, но пользовательский рендеринг, который я использую для некоторых полей, содержит ошибки и дает мне WSOD (у меня нет интереса или возможности исправить рендерер, это крайний случай :))
Я использую Views 3 с Drupal 7
Ответы:
Уже есть функция, которая делает именно то, что вы хотите:
Узнайте больше на его странице на api.drupal.org:
https://api.drupal.org/api/views/views.module/function/views_get_view_result/7
источник
$ view-> preview () обычно используется для простого просмотра дисплея, иными словами, он будет отображаться в указанном формате.
$ view-> execute_display () также возвращает отображение в соответствующем формате, указанном в представлении.
Я думаю, что вы, возможно, должны привести к выполнению запроса напрямую, т.е. db_query ()
источник
Вы должны добиться успеха, если заглушите
view::preview()
свой собственный код, но измените его так, чтобы вместо вызова->display_handler->preview()
он вызывал->execute()
:Это должно работать, потому что для большинства обработчиков отображения вызов to
...->display_handler->preview()
на самом деле является просто оболочкой для обратного вызоваview::render()
. Которая сама начинается с звонка$this->execute(...)
.источник