views

Ограничение допустимого выбора в exposed filters

Чтобы ограничить список допустимых значений в раскрытом фильтре (exposed filter) для views, можно в настройках фильтра вручную выбрать термины которые можно будет выбирать. Но термины могут со временем добавляться, да и их может быть большое количество и неудобно выбирать из большого списка. Можно программно ограничить допустимые значения терминов в hook_form_FORM_ID_alter(). Его можно имплементировать либо в кастомном модуле, либо в template.php файле темы.

Кастомизация хлебных крошек и заголовков страниц представлений

Хлебные крошки и тайтлы, выводимые на страницах вьюсов, порой нуждаются в изменениях, которые невозможно сделать из админки самого представления. В таких случаях можно вмешаться программно и изменить крошки и заголовок страницы вьюшки. Для этого подходит hook_views_post_build(), который выполняется после сборки представления, в самом конце views::build(), при этом SQL запрос уже построен, но ещё не передан в db_rewrite_sql().

Объединение нескольких шаблонов views в один

При темизации вьюса иногда бывает необходимость сделать вывод полей для нескольких вьюх одинаковый, при этом не затрагивая шаблоны для других представлений. К примеру для темизации вывода полей в шаблоне views-view-fields.tpl.php для списка необходимых представлений views нам предлагает использовать следующие шаблоны: views-view-fields--new-articles.tpl.php, views-view-fields--top-articles.tpl.php и views-view-fields--related-articles.tpl.php для представлений с соответствующими именами - new_articles, top_articles и related_articles.

Вставка кода внутрь представления

Порой бывает необходимость вставить какой-либо код внутрь представления. Это может быть код от РСЯ, Адсенса или же просто нужно внутри отрендерить ноду, блок, вьюс и так далее. Самый элементарный способ сделать подобное, это вывести нужный код внутри шаблона представления.

Программное изменение стилей изображения во views

При выводе вьюсом полей изображений в настройках поля можно установить стиль изображения, который будет применяться к этому полю при выводе. Но если есть необходимость выводить множественное поле с разными стилями (к примеру первое изображение выводить со стилем "big", а последующие - со стилем "small"), то придется стили менять программно. Для этого нужно воспользоваться hook_views_pre_render(), который вызывается когда результаты представления уже готовы , но еще не отрендерились.

Перенести шаблоны views из темы в модуль

Если есть необходимость перенести шаблоны вьюс из каталога с темой в свой модуль, чтобы к примеру при изменении темы они не "потерялись", можно воспользоваться hook_theme. Для примера возьмем два шаблона views-view-unformatted--gallery--page.tpl.php и views-view--gallery--page.tpl.php, где gallery - имя вьюхи, а page - имя дисплея. Перенесем эти файлы из папки с темой в папку с созданным модулем и имплементируем hook_theme. Нужно при этом обязательно указать базовые хуки 'base hook' для каждой функции темизации.

Изменяем отображение views в зависимости от его количества результатов

Переопределить настройки отображения модулем views результатов выборки можно используя hook_views_pre_render.
Он вызывается после формирования вьюсом запроса к базе данных , но перед тем как результаты отрендерились.

Рассмотрим пример представления, которое выводит ноды с помощью формата строк (row plugin) "Готовая к выводу сущность".