Получить html код представления можно с помощью функции views_embed_view()
:
views_embed_view($name, $display_id = 'default'[, $argument_1[, $argument_N]])
$name
— системное имя представления;
$display_id
— системное имя вида;
$argument_1, $argument_N
— аргументы (опционально);
Пример вывода встроенного представления comments_recent:
echo views_embed_view('comments_recent', 'page');
Не будет лишним знать о функции views_get_view_result()
, которая возвращает результаты представления в виде массива.
Написанное актуально для
Views 2.x, Views 3.x
Похожие записи
- Views сортировка по выражению/условию/формуле
- Необязательное значение одной из дат в раскрытом фильтре с оператором BETWEEN
- Как расширить функционал фильтр-плагина Views? (добавляем возможность фильтровать числовые поля по нескольким значениям)
- Экспорт представления Views в код
- Программно добавить шапку или подвал в представление
Комментарии
Можете подсказать как решить такую задачу:
views: есть два аргумента типа cck_field
1. кузов (body-1, body-2, body-3 ....)
2. класс (class-1, class-2 ......)
мне нужно вывести материалы которые принадлежат этим двум полям
echo views_embed_view('comments_recent', 'page', body-1+class-3);
выводит пустой лист, в настройках к аргументам указал - Показать все значения
спс, помогло.
На счет views_get_view_result() - спасибо, не знал, мне это как раз пригодится.
Да, но.
При таком варианте отваливается js. Например в d7, не будет работать автосубмит. Не будет работать слайдшоу, и прочее. Можно как либо вызвать views с js.
http://xandeadx.ru/blog/drupal/178#comment-6381
неа, был неправ. автосабмит выведется.
а со слайдшоу, там видимо отдельне проблемы.
А у меня почему-то views_get_view_result не выдает результат.
Есть вьюшка view-last-news, которая в своей превьюхе показывает нормальный результат.
Есть блок, где эта вьюшка так же нормально работает.
А вот в файле node--[тип ноды].tpl.php работать отказывается
Пишу код
$wr=views_get_view_result('view-last-news');
print_r($wr);
И возвращает всего лишь следующее:
Array()
А как получить полностью страницу с этим views? То есть грубо говоря у нас выводится по вид по адресу "category/ggg" и нужно программно вывести страницу вида с некими параметрами по этому адресу?
Но чтобы адрес не изменился. Пробовал drupal_goto - но тогда адрес меняется
а как передать параметр для exposed filter?
http://xandeadx.ru/blog/drupal/633
Как вывести часть представления ?
Например header или footer ?
Может быть, попробовать с помощью view_get_view_result получить вьюшку в виде массива, а затем уже вывести с помощью функции render тот элемент массива, в котором хранится header или footer ?
Нужно сделать это в page.tpl.php
Пробую внутри hook_preprocess_page
Стандартное представление "commerce_cart_block".
В "header" стандартное "Commerce Line Item: Сводка позиций".
Все 33 одинаковые:
http://awesomescreenshot.com/0b322eda33
Вот еще две мысли по поводу того, как это можно сделать.
1. Добавляете в это представление еще одно отображение (my_added_page), в котором редактируете tpl-файл таким образом, чтобы тот отображал только $header (или $footer).
Ну и вот так вот его вызываете
print views_embed_view('my_view', 'my_added_page');
2. Можно попробовать сделать так - загрузить в переменную html-представление данного views таким образом
$var = views_embed_view('my_view');
И далее этот код пропарсить и выделить таким образом заголовок или другую часть. Отдельные части views по умолчанию обрамляются соответствующими классами - нужно только посмотреть их названия.
О первом варианте еще вчера думал.
Второй попробую разобрать прямо сейчас.
Спасибо )
Спасибо. А можно ли отдельно вывести пейджер. Проблема в том что я програмно вывел дважды один блок (второй со смещением даты), а пейджер у каждого свой, а мне надо чтоб они синхронно листались. Подскажите пожалуйста как такое реализовать.
а как к выводу views применить
<?php if …: ?> <?php endif; ?>
?Как передать аргумент в контекстуальный фильтр? Такая конструкция не работает -
$view = views_get_view_result('catalog', 'page', $tid);
Возвращает 0 результатов при любых значениях $tid
Здравствуйте.
Вызываю программно views на котором есть VBO(Views Bulk Operations).
Views отображается нормально все работает корректно, кроме VBO. Подскажите, пожалуйста, что я сделал не так?
Спасибо. Нашел в чем причина.
Добавить комментарий