Блог Vaden Pro

Все о самостоятельном создании и продвижении сайтов

Настройка агрегации в модуле Views в Drupal 7

Раздел: 

Настройка агрегации в views друпал 7

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

Часто можно встретить в интернет магазинах, когда рядом со ссылкой стоит количество материалов, которое находиться на соответствующей странице. Этого эффекта можно достичь на друпал при помощи агрегации в представлении. Именно его мы и рассмотрим на примере словаря «Жанр».

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

При создании сайта я заранее добавил словарь таксономии под названием «Жанр» (демо сайт над котором мы работаем описывался в первом уроке), теперь же он нам понадобится, как источник информации для нашей вьюхи.

Агрегация является одной из настроек модуля Views, поэтому первоначальной задачей для нас стоит создать представление на основе нужного нам материала. Пошаговый процесс создания новой вьюхи мы рассматривали в прошлых уроках, но для закрепления материала повторим. Наводим на раздел «структура», который находится на административной панели, находим подраздел представлений и в выплывающем окне кликаем по ссылке добавить.

Добавление представления

Дальнейшая настройка неизменна, заполняем поля с названием и машинным именем, напомню, что последнее заполняется только буквами английского алфавита и только нижним регистром. Так как наше отображение будет выводить нам термины словаря, то в графе показать мы выбираем «термин таксономии», а в соседней графе под названием «типа» выбираем необходимый нам словарь, в моём случае это «Жанр».

Представление нам необходимо как блок, поэтому ставим галочку соответствующем разделе и задаём ему название. Формат мы выбираем, какой нам будет удобней для вывода нашего отображения на экране, в своём представление я выберу HTML список, состоящий из полей. И продолжаем настройку нашей вьюхи нажатием соответствующей кнопки.

Заполнение формы представления

Настройка

Реализуем подсчет количества материалов

Первоначальная задача, которая перед нами стоит, это создание связи. Для этого нам нужно надо раскрыть раздел «Расширенные настройки» ,найти графу под названием «Связь» и нажатием ссылки «Добавить» раскрыть окно связей.

Добавить связь

Нам нужно связать материала с термином из словаря, поэтому в выплывающем окне находим поле под названием «Термин таксономии: Материал с термином», и добавляем его, ставя рядом с ним галочку. Нам нужна только эта связь, поэтому спокойно можно переходить в её настройки.

Термин с материалом

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

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

Затем необходимо добавить поле, которое будет подсчитывать число книг, которые относятся к тому или иному жанру. Эту функцию выполнит поле Содержимое:Nid, которое мы и добавим.

Добавить поле Nid

Метка нам не нужна, поэтому в настройках соответствующего раздела убираем её и сохраняем наши настройки.

Убираем метку у поля Nid

В этой статье мы планируем рассмотреть функцию модуля views под названием «Агрегация». Но для начала нам надо её включить. Это можно сделать, вернувшись в раздел «Расширенные настройки» и открыть поле под названием «Использовать агрегацию». По умолчанию рядом с этим полем стоит надпись «Нет», это означает, что агрегация выключена. Для её включения нажимаем на «Нет» и в открывшемся окне ставим галочку в нужном поле.

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

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

После того как мы всё сделали у нас появилась новая графа в настройках полей. Перейдя по ней мы можем настроить агрегацию для каждого конкретного поля отдельно. Нам же надо настроить её для поля Nid, поэтому перейдём по новой ссылки под этим полем.

Настройка агрегации у поля

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

Счетчик

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

Предпросмотр

Если всё выводиться правильно, то пора приступать к следующему этапу настройки нашего отображения, а именно к объединение полей, что бы у нас получилось одно поле обёрнутая в ссылку, которая будет ввести на страницу термина.

Объединяем поля

Что бы воплотить нашу задумку нам нужны ещё два поля,которые называются, Термин таксаномии: id термина, и «Глобальный : пользовательский текст» .Первое из которых нам необходимо что бы создать ссылку ведущую на страницу , а во второе для отображения информации в виде текста , кроме того она будет обёрнута в ссылку.

Дополнительные поля

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

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

Настройка агрегации

А в основных настройках убираем галочку с создания метки и сохраняем настройки.

Убираем метку у глобального текста

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

Настройка агрегации

В них мы исключаем данное поле из вывода, для этого мы ставим галочку на разделе «Исключить из вывода». Задачей этого поля является сформировать для нас ссылку, по этому на экране оно нам не нужно. И применяем наши настройки.

Исключаем из вывода

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

Исключить из вывода

Следующее, что нам нужно сделать, после того как мы исключили поля из вывода, это расставить их в необходимом, а точнее будет сказать в правильном для нашего случая, порядке. Нажимаем на треугольник, который находится рядом с кнопкой добавить и выбираем «Изменить порядок» .

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

Порядок мы должны выставить так, чтобы поле «Глобальный текст» был ниже всех остальных. Это необходимо не для выведения полей в правильном порядке, так как другие поля у нас скрыты, а для того что бы данное поле могло содержать в себе подстановочные шаблон всех полей представления.

Порядок полей

После того, как мы выставили в правильном порядке наши поля пришло время настроить «Пользовательский текст».

Свои настройки начнём с заполнения поля «Текст». Для корректного заполнения откроем графу подстановочные шаблоны и выберем из них необходимые для нас. В своём случае я буду использовать шаблон [name], для того чтобы вывести название термина таксаномии, и [nid] который отвечает за вывод поля имеющего это же название (Nid). Напомню что поле Nid , в нашем случае, отвечает за количество книг привязанных к тому или иному термину словаря «Жанр».

Настройка текста

Далее открываем раздел «ПЕРЕЗАПИСАТЬ РЕЗУЛЬТАТЫ», а в нём ставим галочку рядом с «Выводить это поле в виде ссылки». В описании данного раздела указано что путь для сылки мы должны заполнить в поле, которое находится ниже. Поэтому в поле Путь ссылки заполняем book-ganre/[nid].

Перезапись результатов

Поле «Термин таксономии: Имя», является ссылкой на термин, и перебивает настройки которые мы только что делали в графе «перезаписать результаты». Для того, что бы наша работа не пошла насмарку, нам просто нужно перейти в настройки этого поля и убрать галочку с соответствующего поля.

Термин таксономии: Имя ссылка

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

Предпросмотр

После чего можно сохранять наше представление.

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

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

Блок

Дальнейшая тимизация блока идёт посредством CSS. Но при помощи модуля Views и его функции «агрегация» мы создали довольно таки симпатичный и информативный фильтр, который часто встречается на просторах интернет.

Итог

Забегая на перёд отмечу, что пройдя этот урок мы создали лишь блок с терминами таксаномии, а сами страницы на которые ведут эти термины мы будем создавать позже, по этому не пугайтесь если перейдя на страницу вас встретит сообщение «Страница не найдена».