4.5.7. Агрегация данных во Views.
Модуль Views позволяет, не только выводить данные из таблиц друпала как они есть, но он также умеет подсчитывать это строки и группировать результаты. Эта возможность называется агрегацией (aggregation).
По умолчанию из коробки в друпале есть словарь таксономии Тэги (Tags). Давайте создадим блок с самыми популярными тегами и выведем в конце каждого тега, сколько материлов на сайте с этим тэгом. У нас получится примерно такой список:
- Drupal 8 (10)
- Drupal 7 (6)
- PHP (3)
Для начала вам нужно будет создать статьи (Articles) и привязать к ним тэги.
/node/add/article
После создания небольшого количества статей, можно приступать к делу.
/admin/structure/views/add
Добавляем Views блок, выбираем Таксономию и словарь Теги:
Дальше нужно включить агрегацию во Views'е:
Теперь у нас появились дополнительные настройки агрегации в полях:
Теперь добавляем связь Материалы с термином:
Здесь заполняем обязательность связи, чтобы подсчитывать только те материалы в которых выбран тег:
Теперь нам нужно два поля Термин таксономии (Имя), первое мы скрываем:
Второму полю мы выставляем тип агрегации Количество (Count):
Теперь если вы обновите предпосмотр вьюса то вы уже увидите подсчет количества использования каждого из термина таксономии:
Теперь осталось дописать имя тега перед каждым числом. Для этого мы используем второе поле, в котором мы выведем первое скрытое поле и в скобках значение второго поля. Для этого мы будем использовать настройку Перезаписать результаты:
В выпадающем списке Подстановочные шаблоны мы можем посмотреть какие поля мы можем использовать при перезаписывание этого поля.
{{ name }} ({{ name_1 }})
Мы пишем второе поле в скобочках круглых, чтобы наше число было в скобках. Фигурные скобки берутся из Twig'a, мы будем с ним разбираться позже, пока нам достаточно знать, что если мы используем эти значения в {{ }} они будут заменяться на значения нужных нам полей.
В результате у вас должны быть вот такие вот поля:
Что должно выглядеть вот так: