4.5.1. Views Фильтры и сортировка.
Для начала нам нужно научиться выводить блоки и страницы с помощью Views. Давайте начнем со страниц. Выведем все статьи нашего сайта.
Вывод страниц через Views.
Давайте создадим наш первый вью (представление, view), заходим в меню Управление - Структура - Представления.
Теперь нам нужно вбить имя нашего вью, выбрать что мы будем выводить Содержимое, комментарии, пользователей или таксономии (сейчас мы выводим статьи). Выбираем фильтр по типу материала Статья. В сортировке укажем, чтобы сначала шли новые статьи:
Теперь ставим галочку Создать страницу если мы хотим создать страницу или Создать блок, если мы хотим создать блок. Давайте создадим сначала страницу со всеми статьями. Нужно вбить путь к странице и ее название, также мы можем выбрать как выводить и по сколько статей на странице, чуть ниже я распишу подробнее эти настройки.
Нажимайте Сохранить и продолжить. Теперь давайте по порядку разберем все части конструктора Views:
Adding and Removing
Мы можем добавлять и удалять или отключать отображения. Дело в том что в одном представление может быть несколько отдельных вью. Это очень удобно, когда нужно вывести на странице все статьи, а в блоке (да можно выводить блоки и страницы через один вью) вывести только 5 статей, то есть можно переопределить отдельные настройки. Можете пока не запариваться по этому поводу, дальше когда у вас возникнет такая потребность вы это сделаете, а пока можете под каждую потребность создавать отдельный вью.
Формат вывода
В формате вывода вы можете выбрать непосредственно Формат, бывает несколько форматов (по умолчанию):
HTML список - это список через тег <ul>.
Неформатированный список - это вывод через тег <div>.
Сетка - вывод элеметов таблицей без заголовков, удобно когда выводятся картинки, можно выставить в настройках количество столбцов.
Таблица - вывод таблицей с заголовками, удобно этим выводить поля нод, это очень удобно когда нужно вывести много информации.
Поля или тизеры?
Также у нас есть возможность выводить содержимое в виде тизеров или полей, из прошлых уроков вы должны были узнать как менять поля для тизеров, давайте сейчас поставим вывод через поля:
Теперь мы можем добавлять поля, давайте выведем поля Заголовок (title) и Содержимое (body) ноды:
Нажмите Добавить и выберите поле Содержимое: body. Метку можно убрать.
Теперь у нас есть два поля Заголовок и содержимое, вы можете поэксперментировать и вывести дату публикации, автора, категории статьи или добавить поля к типу материала Статья и вывести их тоже в своем вью. Также обратите внимание на поле содержимого (body), мы можем его обрезать под нужное количество символов и добавить три точки. Для этого щелкните по полю боди и в окне настройки вывода поля поставьте галочку Обрезать содержимое (Trim this field maximum...) и пишем какое количество символов выводить:
Дальше нужно поставить галочку Удалить HTML-теги, чтобы в тексте не было не закрытых тегов, из-за этого может поехать верстка.
Теперь у нас есть поля, но мы еще можем формировать фильтры из каких нод выводить поля.
Фильтры
Сейчас у нас два фильтра один, чтобы выводить только опубликованные ноды, один чтобы выводить только статьи. Но мы можем менять эти фильтры как нам угодно.
Если вы нажмете на Добавить, то можете выбрать любой из готовых фильтров для вью. Например можно вывести статьи не старее недели. Давайте добавим такой фильтр. Выберите Содержимое: Дата Публикации. В окне настройки фильтра нужно выбрать Больше или равно и в относительной дате указать -7 days.
Если у вас в фильтрах есть Использование файлов.., то нужно удалить это фильтр и вместо него выбрать тип материала:
Чтобы удалить фильтр, нужно кликнуть на кнопку Добавить в области стрелочки и выбрать Rearrange, в появившемся окне вы сможете удалить фильтр. И потом добавляем фильтр по типу материала.
Также можно фильтровать по автору, по тегам и категориям и еще много по каким критерия, можете поэксперментривать с фильтрами сами. Теперь давайте перейдем к сортировке.
Сортировка
Помимо того, что мы выводим только нужные материалы, мы еще можем выводить материалы через вьюс в нужном нам порядке.
Сейчас у нас сортировка по дата добавления, причем чем новее материал, тем выше он будет в списке (если поставить по возрастанию, то будет обратный порядок). Но мы можем задать вес нашим материалам. Давайте добавим поле Вес нашей статье, чтобы это было положительным целым числом и минимум 1. О том как добавлять поля, вы можете посмотреть в прошлом уроке.
Теперь давайте добавим критерий сортировки Содержимое: Вес, порядок поставим по убыванию, то есть чем больше будет вес, тем выше будет статья в списке.
Теперь остался один ньюанс, если в фильтрами порядок фильтрации особой роли не играет (если не задавать особые условия ИЛИ), то с сортировкой нужно быть осторожным. Результаты сортируются по очередно каждым критерием сортировки. Допустим если первым будет идти сортировка по дате публикации, то результаты будут отсортированны по дате и только в случае совпадение этой даты у двух и более статей, только эти статьи будут сортированны между собой следующим критерием сортировки. То есть сейчас если у вас именно, так, то второй критерий не будет работать, потому что дата публикации сохраняется до секунды, а на сайте статьи публикуются не каждую секунду и вероятность того, что две статьи опубликуют одновременно вплоть до секунды очень мала. Поэтому нам нужно поменять местами сортировки, чтобы сначала у нас сортировались статьи по весу (сначала статьи с большим весом), а потом в случае совпадения весов, статьи определяли порядок по дате публикации.
Для этого если на кнопке добавить кликнуть на стрелочку на кнопке и выбрать Rearrange, то с помощью крестиков можно поменять местами очередность сортировок.
Сохраняем вью. Все теперь можно создать несколько статей, зайти на сайт на страницу /articles (возможно вы прописали у себя во вью другой путь) и посмотреть результаты: