Введение в Views 3 в Drupal 7
Views - это один из самых популярных модулей Drupal с более чем 5 миллионами загрузок и более 700 тысячами сайтов, сообщающих о его использовании. Модуль настолько популярен, что будет представлен в ядре Drupal 8, как часть уже анонсированных и ожидающих представления инициатив в процессе запуска Drupal 8.
Это вводная статья по всему миру Views, которая расскажет о том, как вы можете использовать этот большой модуль для создания списков контента.
В статье я освещу несколько более мелких тем, касающихся Views. Во-первых, я расскажу, как начать работу с модулем, и как создать вьюшку. После этого мы рассмотрим, какие списки и форматы контента доступны в базовой версии.
После того, как мы выберем, как будет выглядеть наша вьюшка, нам нужно будет разобраться с фильтрами и сортировкой. Эти параметры используются для того, чтобы обеспечить вывод только соответствующего контента и в том порядке, что нам нужно.
Звучит интересно, не правда ли?
Давайте приступим.
Приступаем к работе
Устанавливается Views, как любой другой модуль. Я не буду описывать вам процесс установки модулей Drupal, а просто порекомендую ознакомиться с полным руководством на Drupal.org.
Если вы знаете, как работать с Drush (с которым я всем сердцем рекомендую вам попробовать поработать), вы можете запустить две простые команды:
drush dl views
drush en views views_ui -y
После этого будут скачаны и включены все необходимые модули (в том числе CTools, который зависим от других элементов).
Теперь, когда мы установили Views, мы можем перейти к пункту меню admin/structure/views, чтобы увидеть все существующие на сайте вьюшки.
Вы заметите, что по некоторым поставляемым в комплекте вьюшкам выдаются ошибки. Мы не будем сейчас вдаваться в подробности, просто знайте, что они есть. Главная страница и Термины таксономии особенно интересны тем, они показывают поведение Drupal по умолчанию.
Дальше я хочу создать вьюшку и настроить ее, чтобы показать, как вы можете начать работу с ней. Так что продолжаем и нажимаем кнопку «Add new view». После этого нам предлагается форма создания вьюшки:

Здесь мы зададим название вьюшки, а также уже можем установить фильтр, который определяет, какого рода информация будет выводиться во вьюшке.
Для демонстрации мы выберем тип Content (материал), но вы видите, что здесь доступны и другие типы (термины, пользователи и т.д.). Обратите внимание, что выбор, который вы сделаете в этом поле, впоследствии не может быть изменен.
Поэтому после определения типа Content позже нам будут доступны только опции, соответствующие этому типу. Сейчас давайте выберем опцию Article, но знайте, что этот параметр может быть позже изменен.
Кроме того, поскольку мы выбрали тип контента Article, который имеет поле Tags, которое связано с терминами таксономии в одноименном словаре, мы можем на основе этого задать еще один фильтр.
Сейчас мы этого делать не будем, просто отмечаем, что можем это сделать (и сейчас, и позже при редактировании вьюшки).
И, наконец, мы можем отсортировать список уже доступных на данный момент критериев. Но этого мы тоже пока делать не будем.
Дисплей страницы
Ниже полей ввода, которые мы только что рассмотрели, находятся еще два поля, которые дают нам возможность создать страницу и блок. Они служат для быстрого доступа к созданию дисплеев для нашей вьюшки.
Любая вьюшка может содержать несколько дисплеев различных типов (страница, блок, отзыв и т.д.). Некоторые из них доступны в базовой версии, а некоторые предоставляются дополнительными модулями.
Поэтому вы можете создать одну вьюшку, которая может отображать один и тот же контент несколькими способами, используя различные форматы, фильтры и т.д.
В этой статье мы будем использовать дисплей Страница, который создадим на следующем этапе (именно так процесс настройки будет происходить у вас). Так что оставьте эти два поля незаполненными, и нажмите кнопку «Продолжить и редактировать».
Вы попадете на главную страницу редактирования вьюшки, где я рекомендую вам нажать кнопку «Сохранить», так как до того, как вы это сделаете, вьюшка еще не будет сохранена.
Вверху этой страницы вы увидите окно Displays, в котором уже будет содержаться один дисплей под названием Master. Мы хотим создать страницу, адрес которой выберем из предлагаемого списка.
Поэтому нажмите кнопку Add, выберите пункт Page и укажите новое имя дисплея. Далее вы можете также выбрать название страницы, нажав на слово None ниже поля Заголовок.
Здесь следует отметить одну важную вещь, которая пригодится вам и в будущем. При внесении изменений, как те, которые мы только что сделали, вам будет предложено на выбор применять это изменение только к текущему дисплею или для всех остальных (смотрите рисунок ниже).
Вы должны быть осторожны, потому что по умолчанию используется опция All displays. Это легко забыть, и у вас могут возникнуть проблемы, если вы имеете несколько дисплеев. Так что имейте это в виду, и убедитесь, что вы изменяете дисплеи, которые вам нужны:

Прежде, чем перейти к другим настройкам, вы должны будете указать путь к странице вьюшки. Views должен будет зарегистрировать его в Drupal и не позволит вам без этого сохранить вьюшку.
Так в настройках страницы кликните поле, в котором сейчас выводится надпись No path is set и укажите адрес страницы. После этого вы можете поместить его в меню и указать правила доступа к странице.
Формат
В панели Формат содержится несколько важных параметров, которые определяют, как будет отображаться вьюшка, и что конкретно из контента будет отображаться.
В базовой версии существует несколько вариантов формата, которые вы можете выбрать (и некоторые настройки для каждого из них), но мы сейчас будем использовать вариант по умолчанию: неформатированный список.
Это самый простой формат, вы можете поиграть и поэкспериментировать с другими вариантами формата.
Теперь, когда мы выбрали формат, давайте посмотрим, как же на самом деле будут форматироваться элементы. По умолчанию, это поля.
Это означает, что вы выбираете количество полей Drupal (или организацию параметров, или поля, объявленные с помощью пользовательского интерфейса), и они будут отображаться для каждой статьи.
Выбрав данную установку, мы продолжим. Я только хочу упомянуть еще об одной опции, доступной в Views: content.
Каждому типу контента в Drupal 7 соответствует несколько режимов отображения (полный, тизер, RSS и т.д.). С помощью модуля Display Suite вы можете задать другие режимы. И для каждого режима отображения вы можете указать отдельный способ вывода полей.
Например, у вас будет один стиль изображений для изображений в тизере, а в режиме полного просмотра другой.
Это то, чем параметр content отличается от fields. Вы можете выбрать материал, который будет отображаться с использованием определенного режима отображения.
И это дает вам большие возможности. Но давайте вернемся к полям, потому что это тот параметр, который в мире Views отвечает за подготовку вывода каждой строки.
Поля
Теперь, когда мы дошли до настройки полей, мы можем видеть в области предварительного просмотра в нижней части страницы список заголовков статей.
Потому, что по умолчанию Views обязательно включает поле заголовка, и поэтому необходимо выбрать хотя бы один заголовок. Чтобы добавить другие поля, нажмите кнопку Add. В появившемся окне вам будет предложено выбрать другие поля для добавления.
Различные типы полей имеют различные доступные опции, но, к сожалению, мы не можем рассмотреть их все. Давайте поставим себе определенную задачу и постараемся ее выполнить: создать тизер материала статьи, в котором выводится заголовок, краткая выдержка и изображение.
Давайте найдем поля по умолчанию для краткого описания и изображения, которые доступны для типа контента Статья. Они обозначаются, как Content: Body и Content: Image, так что поставьте рядом с этими полями флажки и примените изменения.
Настраивать оба этих поля вам придется по очереди. Для демонстрации мы можем снять флажок рядом с пунктом Create a label и в меню Форматирование выбрать пункт Summary or trimmed, и тут же, если хотите, вы можете указать собственное значение длины выдержки-описания.
Следующие три выпадающие панели опций позволяют задать более продвинутую настройку, они доступны и для большинства других типов полей. Мы не можем рассказать о них полностью, но постараемся описать их вкратце.
В разделе Style settings можно задать настройки HTML для этого конкретного поля. В разделе No results behavior вы можете указать, что будет выводиться в поле, если для него ничего не задано.
А в разделе Rewrite results доступно много вариантов для оформления отображаемого контента. Здесь Вы можете задать слияние полей, вывод ссылок, тегов и другие опции.
После того, как вы назначите формат для выдержки, вам нужно будет повторить все это для поля изображения. Я предлагаю вам снова убрать флажок в пункте Ярлык, и, так как мы хотим, чтобы изображение выводилось в тизере, давайте выберем стиль изображений Миниатюра.
Мы также можем связать изображение с контентом. После сохранения этих параметров посмотрите, как выглядит ваш тизер на предварительном просмотре. Вы должны увидеть заголовок, выдержку статьи и изображение для каждой статьи материала.
Если вы хотите изменить порядок расположения полей, нажмите на маленькую стрелочку рядом с кнопкой Add и выберите пункт Rearrange. После этого вы можете перетаскиванием расположить элементы в нужном вам порядке.
Хотя это далеко еще не все настройки, которые вы можете произвести - существует еще много опций редактирования и стилей, которые нужно задать для любого реального сайта, но необходимый минимум мы уже выполнили и можем двигаться дальше.
Фильтры
Ниже раздела Fields, располагается раздел Filter criteria, который уже содержит два фильтра (вы можете нажать на них и посмотреть варианты).
Первый фильтр относится к статусу материала и выводит только опубликованный контент. Второй фильтр связан с типом контента и показывает только материалы типа article. Здесь мы можем изменить фильтры или включить другие типы контента.
Также здесь есть возможность разрешить конечным пользователям изменять фильтры. Для этого нужно установить флажок для опции Expose this filter to visitors, to allow them to change it.
Так, например, если мы захотим, чтобы конечные пользователи могли выбирать, какие типы контента должны им выводиться, мы можем включить эту функцию.
В разделе Advanced в правой части страницы вы также можете добавить контекстные фильтры. Это очень мощный инструмент, позволяющий применить фильтры динамически по всему сайту, для конкретных страниц или для другой части контента.
Это дополнительная функция, которую мы не будем рассматривать подробно, но имейте в виду, что она существует.
Сортировка
В разделе Sort criteria можно добавить поля, которые будут использоваться для сортировки вьюшки. Давайте добавим возможность поиска по дате публикации материала (Content: Post date), чтобы можно было выводить список материалов в порядке убывания.
Имейте в виду, что вы также можете предоставить возможность задавать эти поля конечным пользователям, и пусть они выполняют свою собственную сортировку.
Заключение
Ну, вот и все. Мы собрали простую вьюшку, отображающую основную информацию о статьях, опубликованных на сайте. При этом мы рассмотрели, как создается вьюшка, и какие возможности есть у нас для определения ее формата.
Мы рассмотрели разные дисплеи и создали собственную страницу, которая выводит вьюшку. Вы также увидели, как можно добавлять поля и в чем заключается разница между полями и контентом, когда это касается изображений.
И, наконец, мы рассмотрели основные фильтры и критерии сортировки и то, как они работают.
К сожалению, мы только поверхностно затронули тему соображений. Как опытный пользователь Views я чувствую, что в статье не были раскрыты все мощные возможности этого модуля.
Он действительно очень сложен, и те действия, которые мы проделали, лишь отчасти демонстрируют все многообразие его функционала. Но вы должны начать с основ и понять основные концепции, прежде чем переходить к изучению более захватывающих возможностей Views.
Этот модуль имеет еще много других функций и опций, которые действительно делают его незаменимым для почти любого сайт на Drupal. Поэтому я советую потратить еще время на изучение Views, если вы хотите работать с Drupal эффективно.