@deadnice

Как правильно задать фильтр при загрузке view?

Есть необходимость программно вызвать view и добавить в него фильтр.
Вывести получилось, но вот условие не срабатывает, выводятся все элементы во view.

if ($variables["node"]->getType() == 'author') {
    $view = Views::getView('news_by_author');

    $args = array('field_author' => $variables["node"]->id());
    if (is_object($view)) {
      $view->setArguments($args);
      $view->setDisplay('page_1');
      $view->preExecute();
      $view->execute();

      $variables['author_articles'] = $view->buildRenderable('page_1', $args);
    }
  }
  • Вопрос задан
  • 28 просмотров
Решения вопроса 1
@deadnice Автор вопроса
Решил так:
if ($variables["node"]->getType() == 'author') {
    $view = Views::getView('news_by_author');

    if (is_object($view)) {
      $view->setDisplay('page_1');
      $filters = $view->display_handler->getOption('filters');
      $filters["field_author_target_id"]["value"]["value"] = $variables["node"]->id();
      $view->display_handler->overrideOption('filters', $filters);
      $view->preExecute();
      $view->execute();

      $variables['author_articles'] = $view->buildRenderable('page_1');
    }
  }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы