4.5.7. Агрегация данных во Views.

Модуль Views позволяет, не только выводить данные из таблиц друпала как они есть, но он также умеет подсчитывать это строки и группировать результаты. Эта возможность называется агрегацией (aggregation).

По умолчанию из коробке в друпале есть словарь таксономии Тэги (Tags). Давайте создадим блок с самыми популярными тегами и выведем в конце каждого тега, сколько материлов на сайте с этим тэгом. У нас получится примерно такой список:

  • Drupal 8 (10)
  • Drupal 7 (6)
  • PHP (3)

Для начала вам нужно будет создать статьи (Articles) и привязать к ним тэги. 

/node/add/article

drupal views

После создания небольшого количества статей, можно приступать к делу.

/admin/structure/views/add

Добавляем Views блок, выбираем Таксономию и словарь Теги:

Drupal views

Дальше нужно включить агрегацию во Views'е:

Drupal aggregation

Теперь у нас появились дополнительные настройки агрегации в полях:

друпал вьюс

Теперь добавляем связь Материалы с термином:

Друпал вьюс

Здесь заполняем обязательность связи, чтобы подсчитывать только те материалы в которых выбран тег:

друпал вьюс

Теперь нам нужно два поля Термин таксономии (Имя), первое мы скрываем:

Views

Второму полю мы выставляем тип агрегации Количество (Count):

Друпал

Теперь если вы обновите предпосмотр вьюса то вы уже увидите подсчет количества использования каждого из термина таксономии:

Друпал 8

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

друпал 8

В выпадающем списке Подстановочные шаблоны мы можем посмотреть какие поля мы можем использовать при перезаписывание этого поля.

{{ name }}  ({{ name_1 }})

Мы пишем второе поле в скобочках круглых, чтобы наше число было в скобках. Фигурные скобки берутся из Twig'a, мы будем с ним разбираться позже, пока нам достаточно знать, что если мы используем эти значения в {{ }} они будут заменяться на значения нужных нам полей.

В результате у вас должны быть вот такие вот поля:

агрегация

Что должно выглядеть вот так:

Drupal views агрегация

 

 

 

 

 

 

 

 

 

 

Комментарии

Добавить комментарий

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook
(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Скорее всего нужно дописать

Скорее всего нужно дописать немного кастомного кода, чтобы дополнительно фильтровать. Или добавить фильтр по текущему языку сайта. У меня тоже возникали ошибки в работе Views и агрегации в 8ом друпале.