Все о Drupal CMS,  Интернет технологии

Контекстные фильтры и связи Views Drupal

В этом уроке мы рассмотрим работу с контекстными фильтрами и связями.

У типа материалов Фильм есть поле В ролях. Это поле типа Entity Reference ссылающееся на типа материалов Роль.

Если мы перейдем на страницу любого фильма, то увидим, что актеры, которых мы добавили в поле В ролях,выводятся как простой список.

Страница фильма

С помощью модуля Views (Представления) мы сделаем отображение актеров более интересным.

Для начала скроем стандартный вывод поля В ролях. Переходим на страницу управления отображением полей для типа материалов Фильм.

Ссылка на страницу управления полями

Переместим поле В ролях в секцию Скрытый и сохраним настройки.

Скрыть поле В ролях

Теперь перейдем в раздел Представления и нажмем на ссылку Добавить новое представление.

Ссылка Добавить новое представление

Назовем новое представление Актёры (машинное имя actors). В поле Показать выберем Содержимое типа Актёр.

Создание представления актеры

Снимаем галочку напротив Создать страницу, так как страничное отображение нам не нужно, а вместо этого поставим галочку напротив Создать блок. Задаем заголовок блока В ролях: и выбираем формат отображения Сетка. Нажимаем Продолжить редактирование.

Теперь, если мы взглянем на предпросмотр блока, то увидим имена актеров выведенных в виде сетки.

Предпросмотр блока в ролях

Добавим поле Фото и еще раз взглянем на предпросмотр. Блок теперь выглядит значительно лучше.

Предпросмотр блока в ролях с изображением

Как мы видим в отображение выводятся все актёры, а нам нужно сделать так чтобы выводились актёры для каждого конкретного фильма. Для этого первым делом нужно добавить связь с типом материалов Фильм по полю В ролях.

Разворачиваем блок расширенных настроек.

Развернуть блок расширенных настроек

Нажимаем на кнопку Добавить в секции Связи.

Ссылка добавить связь

В открывшемся всплывающем окне добавляем связь Entity Reference: Связанная сущность. В описании этой связи написано, что ссылаться на Содержимое она будет через поле field_roles, что нам и требовалось.

Читать еще:  Изучаем модуль Views Drupal

Добавление связи Entity Reference

Далее мы меняем стандартный Идентификатор на более понятный — Исполнитель роли.

Настройки связи Entity Reference

Также необходимо поставить галочку Эта связь обязательна так как нам нужны только те актеры, которые привязаны к фильму. Нажимаем кнопку Применить (все отображения).

Настройки связи Entity Reference

Теперь, когда связь с типом материалов Фильм установлена, пришло время добавить контекстный фильтр с помощью которого будут отфильтровываться актеры для каждого конкретного фильма.

Нажимаем на кнопку Добавить в секции Контекстные фильтры.

Ссылка добавить контекстный фильтр

Находим и добавляем контекстный фильтр Содержимое: Nid и нажимаем кнопку Применить (все отображения).

Контекстный фильтр Содержимое Nid

Далее нам предлагается настроить этот фильтр. В поле Связь выберем ранее добавленную нами связь Исполнитель роли. Этим мы показываем, что ,в качестве аргумента для фильтрации, мы принимаем именно идентификатор фильма, а не актера.

В секции Когда значение фильтра не доступно выбираем пункт Передать значение по умолчанию и в поле Тип выбираем ID материала из URL. Это значит что, когда мы будем заходить на страницу фильма, его идентификатор (NID) будет передаваться в представление и по нему будут отбираться только те актеры, которые указаны в поле В ролях.

Нажимаем Применить (все отображения).

Настройки контекстного фильтра Содержимое Nid

Сохраняем представление.

Кнопка сохранить представлениеПереходим в раздел Блоки.

Ссылка на раздел Блоки

Перемещаем блок В ролях в регион First sidebar (Первая боковая панель).

Размещение блока Актеры: В ролях

Нажимаем кнопку Сохранить блоки, чтобы закрепить позицию блока и переходим к настройке блока В ролях.

Ссылка на настройки блока Актеры: В ролях

В секции Настройки видимости выберем Тип материаловФильм, чтобы блок отображался только на странице фильма. Нажимаем Сохранить настройки.

Показывать блок только на странице типа материалов Фильм

Переходим на страницу фильма Пятый элемент. В блок В ролях действительно выводятся актеры сыгравшие роль в этом фильме. Значит представление работает правильно. Осталось только немного подправить внешний вид.

Страница фильма

Переходим на страницу редактирования представления и нажимаем на ссылку редактирования настроек формата отображения Сетка.

Читать еще:  Создание представления с агрегацией Views в Drupal 7

Ссылка на настройки формата отображения Сетка

Изменяем число столбцов на 2 и нажимаем Применить (все отображения).

Установка числа столбцов

Также изменим стиль изображения для поля Фото на Thumbnail (100×100) (как это делать мы уже рассматривали). Сохраняем представление и переходим обратно на страницу фильма.

Теперь блок В ролях выглядит гораздо лучше.

Красивое отображение блока В ролях

Посмотрим еще один пример страницы фильма.

Еще один пример отображения блока В ролях

В этом уроке мы рассмотрели пример работы с контекстными фильтрами и связями. В следующем уроке мы разберем такое понятие как агрегация.