Если вы практикуете вызов и рендеринг объектов views из кода, то возможно вам пригодится следующий пример задания значения контекстного фильтра напрямую из вашей программы.
Программное задание значений фильтров я уже рассматривал ранее. Принцип тот же — мы меняем настройки объекта views перед вызовом метода execute().
Обычно требуется заменить два параметра контекстного фильтра — задать ему тип fixed и указать значение аргумента.
Рассмотрим пример программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php // Я собираюсь вывести в шаблон вьюху с баннером. // Она настроена так, что при выводе на странице конечного товара // использует контекстный фильтр - и выводит один из баннеров, // связанных именно с этим товаром. // Но я хочу вывести эту вьюху в списке товаров. Чтобы она заработала, // требуется поправить контекстный фильтр. // грузим объект view $view = views_get_view('banner_square'); // выбираем нужное представление $view->set_display('block'); // грузим аргументы $filters = $view->display_handler->get_option('arguments'); // устанавливаем значение аргумента, который // является контекстным фильтром $filters['field_korms_target_id']['default_argument_type'] = 'fixed'; $filters['field_korms_target_id']['default_argument_options'] = array('argument' => /* установите здесь ваше значение */ $value); // сохраняем настройки аргументов $view->display_handler->set_option('arguments', $filters); // выполняем запрос $view->execute(); // выводим результат рендера print $view->preview(); ?> |
Пример создан для Drupal 7.