Создание представления с агрегацией

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

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

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

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

Заполняем стандартную форму создания нового представления. В поле Показать выбираем Термины таксономии типа Жанр. Также сразу создадим блочное отображение Жанры, установим для него Формат отображения - HTML список из Поля.

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

Нажимаем кнопку Продолжить редактирование.

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

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

В списке связей выбираем Термин таксономии: Материалы с термином.

Добавление связи Материалы с термином

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

Настройки связи Материалы с термином

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

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

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

В списке полей находим поле Содержимое: Nid, отмечаем его и нажимаем Применить (все отображения).

Добавление поля Nid

В настройках поля снимаем галочку Создать метку. Нажимаем Применить (все отображения).

Настройки поля Nid

Нажимаем на ссылку напротив метки Использовать агрегацию.

Ссылка на включение Агрегации

Ставим галочку Агрегировать и нажимаем Применить (все отображения).

Включение агрегации

Теперь для каждого поля у нас появилась новая настройка Настройки агрегации.

Нажимаем на ссылку Настройки агрегации для поля Содержимое: Nid.

Ссылка настройки агрегации

Задаем тип агрегации Счетчик и нажимаем Применить.

Установка типа агрегации Счетчик

Eсли мы посмотрим на предпросмотр для этого отображения, то увидим, что в поле Содержимое: Nid теперь выводится количество ссылающихся на него материалов (в нашем случае это количество фильмов конкретного жанра).

Предпросмотр блока Жанры

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

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

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

Отмечаем поле Термин таксономии: ID термина. Это поле нам будет необходимо для формирования ссылки на страницу жанра.

Добавление поля ID термина

Отмечаем поле Глобальный: Пользовательский текст и нажимаем Применить (все отображения).

В поле Пользовательский текст мы и будет выводить собранную из других полей информацию в виде ссылки на страницу жанра.

Добавление поля Пользовательский текст

Так как включена агрегация, то при добавлении новых полей нам предлагается не только задать основные настройки для каждого добавленного поля, но и настройки агрегации для этих полей.

В настройках агрегации для поля Глобальный: Пользовательский текст оставляем все как есть и нажимаем Применить и продолжить.

Настройки агрегации для поля Пользовательский текст

В настройках этого поля убираем галочку Создать метку и нажимаем Применить (все отображения).

Настройки поля Пользовательский текст

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

Настройки агрегации для поля ID термина

В настройках этого поля ставим галочку Исключить из вывода так как оно нам нужно только для формирования ссылки на страницу жанра. Нажимаем Применить (все отображения).

Настройки поля ID термина

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

Переходим к редактированию поля Термин таксономии: Имя.

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

Ставим галочку Исключить из вывода и нажимаем Применить (все отображения).

Исключение из вывода поля Имя термина

Переходим к редактированию поля Содержимое: Nid.

Ссылка на настройку поля Nid

Также исключаем его из вывода и сохраняем настройки поля.

Исключение из вывода поля Nid

Теперь переходим к редактированию порядка полей.

Ссылка на изменение порядка полей

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

Изменяем порядок полей

Переходим к редактированию поля Пользовательский текст.

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

Первым делом в поле Текст зададим формат вывода. Для этого используем подстановочные шаблоны [name], вместо которого будет выводится имя термина, и [nid], вместо которого будет выводится поле Nid (то есть количество фильмов относящихся к жанру). Как видно из шаблона количество фильмов будет выводиться в скобках.

Настройка текста для поля пользовательский текст

Далее перейдем к секции Перезаписать результаты и поставим галочку Выводить это поле в виде ссылки, чтобы завернуть отображаемый текст в ссылку. В поле Путь ссылки задаем шаблон пути film-by-genre/[tid]. Здесь мы также используем подстановочный шаблон [tid] вместо которого будет выводиться идентификатор термина. Нажимаем Применить (все отображения).

Задание ссылки для поля пользовательский текст

Поле Термин таксономии: Имя по умолчанию выводится как ссылка на страницу термина. Эта настройка имеет приоритет над секцией Перезаписать результаты, поэтому необходимо ее убрать. Переходим к настройкам этого поля.

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

Снимаем галочку Сделать это поле ссылкой на страницу его термина таксономии и нажимаем Применить (все отображения).

Убрать настройку вывода поля как ссылки

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

Предпросмотр блока Жанры

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

Кнопка сохранения представления

Далее размещаем блок Жанры в регион First sidebar (Первая боковая панель) по аналогии с тем, как мы это делали для блоков Топ 5 и В ролях.

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

Отображение блока Жанры

В следующем уроке мы создадим отображение для страницы жанра.

Поделись с друзьями:

Комментарии

Подскажите пожалуйста, я делаю первые шаги, но на своем сайте, и возникает такая проблема:
Как только я выбираю "Термин таксономии: Материалы с термином" и ставлю галочку около "Эта связь обязательна", у меня в превью уже пропадают все слова из словаря. То есть оно не связывает етот блок с тем что указано в материалах. Я так понимаю что я должен был раньше гдето использовать словарь, но не понимаю где. Подскажите пожалуйста)

В первом уроке курса есть ссылка на исходники демо сайта. Можете сравнить с тем что у вас и определить чего не хватает.

Дело в том, что у меня все на хостинге и даже не знаю как правильно ету демо поставить

Тогда смотрите курсы из раздела Основы Drupal, там как раз об этом.

Здравствуйте, Денис. Когда перехожу по ссылке с жанром, например http://filmdb/film-by-genre/6, то выдает что Страница не найдена. Не подскажите, что еще надо настроить?

Читайте следующий урок, в этом уроке мы создаем блок который будет вести на страницу жанра а в следующем представление которое будет эту страницу отображать.

Если не снимать галочку "сделать это поле ссылкой на страницу его термина таксономии" то работает и так))

Здравствуйте!
У меня такой вопрос.
Как выводить не все термины таксономии, а только определенные?
У меня есть словарь "Категории объявлений" и мне нужно показать в блоке только категорию "Недвижимость" с вложенными терминами, а остальные не показывать.

Добавить фильтр Id термина и задать для него id термина Недвижимость.

Спасибо!

Еще вопрос.
Как в данной конструкции вывести термины у которых нет ни одного материала?

Убрать галочку "Эта связь обязательна" в настройках связи "Материал с термином".

Еще раз огромнейшее спасибо!

Возник еще вопрос.
Допустим есть словарь с термином "Недвижимость" м вложенными в него терминами "Дома" и "Квартиры". И есть словарь "Автомобили" с вложенными терминами "Легковые" и "Грузовые".

Как сделать так, чтобы когда пользователь выбирает при создании объявления определенный термин, например "Дома", у него появлялачь возможность заполнить соотевтствующие этому термину поля: "Площвдь", "Количество комнат" и т. д. А при выборе термина "Легковые" соответственно появлялась возможность заполнить другие поля: "Марка", "Объем двигателя" и т. д.

Спасибо! Модуль подошел.