Агрегация
Еще одной очень важной возможностью модуля Views является агрегация. Она позволяет применять функции группировки к результатам представления. Например, создадим представление, которое отображает список актеров и количество фильмов, в которых они снимались. Создадим новое представление: Меню администратораСтруктураПредставления Добавить новое представление (рис. 43).
Рис. 43 - Создание нового представления
Зададим следующие исходные настройки (рис. 44):
Имя представления: Актеры;
Машинное имя: v_actors;
Показать: Содержимое типа: Человек сортировать по: Несортированный.
Рис. 44 -Настройка представления Актеры
Создадим страницу со следующими параметрами (рис. 45):
Заголовок страницы: Актеры;
Адрес: Actors;
Формат отображения: таблица.
Рис. 45 - Создание страницы для представления Актеры
После нажатия кнопки Продолжить и редактировать в исходном состоянии наше представление отображает список всех материалов типа Человек. Но информация о фильмах, в котором снимались актеры сохраняется в материале Фильмы. Таким образом, нужно создать взаимосвязь (рис. 46, 47).
Рис. 46 - Создание взаимосвязи представления Актеры
Рис. 47 - Выбор поля связи в представлении Актеры
Следует напомнить, что обязательно необходимо установить пункт «Эта связь обязательна», что позволит оставить в списке только тех людей, которые хотя бы раз снимались в фильме.
После этого необходимо добавить поле, которое будет выводить названия фильмов, в которых снимались актеры (рис. 48).
Рис. 48 - Добавление поля заголовка
Параметры настройки поля заголовка приведены на рис. 49.
Рис. 49 - Настройка поля заголовка
Следует заметить, что обязательно необходимо установить для этого поля свіязь. Если этого не сделать, то будет выводится заголовок основного материала, т.е. Человек, и вместо названий фильмов мы увидим дублирование имен актеров. Промежуточный результат работы будет представлен в виде таблицы (рис. 50).
Рис. 50 - Промежуточный вид представления Актеры
Для того, чтобы подсчитать количество фильмов необходимо применить агрегацию. В технологии Drupal агрегация позволяет группировать данные и добавлять расчетные поля. Для этого необходимо применить агрегацию. Для этого сначала необходимо осуществить следующую настройку (рис. 51).
Рис. 51 - Добавление агрегации в представление
После данного пункта немного изменится вид подменю Поля (рис. 52), для каждого поля теперь можно выбрать функцию агрегации:
Рис. 52 - Добавление агрегации к полям представления
Функцию агрегации по умолчанию является группировка. Для подсчета количества фильмов каждого актера необходимо сгруппировать данные по актерам (выполнено по умолчанию), а названия фильмов посчитать. Изменение функции агрегации для поля Количество фильмов показано на рис 53.
|
|
Рис. 53 - Изменение функции агрегации для поля Количество фильмов
Кроме указанных действий, необходимо провести дополнительную настройку созданного представления. Нужно изменить заголовок первого столбца (рис. 54).
|
|
Рис. 54 - Дополнительная настройка представления Актеры
Дальше необходимо добавить ссылку на нашу страницу в главное меню ВОКС (рис. 55).
Рис. 55 - Создание пункта в главном меню для представления Актеры
После сохранения результатов по соответствующему адресу можно увидеть результаты создания представления с использованием агрегации (рис. 56).
Рис. 56 - Результирующий вид созданного представления
