В предыдущей статье рассказывалось о создании на сайте под управлением Drupal раздела "Новости"
Сегодня рассмотрим, как можно более тонко настроить представление информации на сайте с помощью модуля Views на примере организации вывода все тех же новостей. Т.е. попытаемся убить двух зайцев: рассказать про замечательный модуль и довести до ума тему "Новости на сайте".

ТЗ:

Новости публикуются на сайте с помощью типа материала "Новость". Нужно выводить тизеры всех новостей на отдельной странице, доступной через главное меню по адресу имя_сайта/news, с разбивкой по 10 шт. на страницу. Заголовки последних 5 новостей с датами публикации выводить в отдельном блоке на каждой странице сайта.

1. Скачиваем модуль Views, копируем его на сайт в каталог \sites\all\modules\ и на странице /admin/build/modules активируем его:
в группе Views отмечаем - "Views" и "Views UI"

2. Создаем Views.
Переходим на /admin/build/views
Здесь есть большой список предустановленных вариантов Views. Создадим новый. Для этого выбираем меню "Add" ("Добавить"). Задаем имя для нового Views (Использовать для имени можно только латинские буквы, цифры и символ подчеркивания. Так же учитывайте, что это имя впоследствии нельзя изменить.) и нажимаем кнопку "Next".

Ух, ты! Как много буков...!!! Спокойно, сейчас разберемся.

Представления Views

в левой части появившегося экрана список представлений (Display'ев). У нового вьювса только одно представление - "Defaults". Как уже становится понятно, один Views может содержать несколько представлений. Для создания дополнительного представления нужно выбрать его тип в выпадающем списке под этим именем и нажать кнопку "Add display". Сделаем это для типа "Страница". Теперь выберем тип "Блок" и создадим еще одно представление кнопкой "Add display".


 

три представления одного Views

У нас получилось три представления: Defaults, Страница и Блок. Будем считать, что этот элемент освоен.

Переключаясь между представлениями, можно заметить, что часть параметров написана курсивом, а другие - обычным прямым шрифтом. Здесь мы сталкиваемся с понятием наследования. Созданные нами дополнительные представления наследуют свои свойства у изначального представления Defaults до тех пор, пока эти параметры для данного представления не будут переопределены. Это очень удобно. Ведь для одного и того же Views многие параметры будут повторяться. Мы увидим это дальше.


Обязательным этапом создания Views является выбор полей, которые будут выведены на экран, а также, определение фильтра, который формирует набор обрабатываемых данных. Пока мы не зададим поля и фильтр, нам нечего будет показать, а в админке мы будем видеть соответствующее сообщение об ошибке. Это нормально. Переходим на представление Defaults и нажимаем плюсик в разделе "Фильтры". Прокручиваем страницу вниз и в разделе "Defaults: Add filters" отмечаем пункт "Материал: Тип", нажимаем кнопку "Добавить". Оставляем переключатель "Operator" в положении "Is one of" и отмечаем галочкой тип материала "Новость". Нажимаем в этой группе элементов кнопку "Изменить".

Должно получиться так:

Нажимаем плюсик в разделе "Поля". Отмечаем "Материал: Post date" и "Материал: Заголовок", считая что эти поля нам нужны будут во всех представлениях, как на странице, так и в блоке. Нажимаем кнопку "Добавить" под этим списком.
Появляется экран для конфигурирования выбранного параметра "Defaults: Configure field Материал: Post date". Удаляем в заголовке "Post date" или пишем там что-нибудь по-русски. Выбираем из списка подходящий формат даты или задаем "Собственная" и в появившемся поле пишем, например, "d.m.Y". Остальное здесь можно не трогать. Кнопка "Изменить".

Теперь конфигурируем поле "Материал: Заголовок". В параметре "Заголовок" удаляем слово "Заголовок", отмечаем галочкой параметр "Link this field to its node", для того чтобы наш заголовок являлся ссылкой на полную версию новости. Кнопка "Изменить".

Зададим еще порядок сортировки так, чтобы сверху отображались последние новости. Нажимаем плюсик в разделе "Sort criteria", выбираем "Материал: Post date", кнопка "Добавить". Переключаем "Sort order:" (Порядок сортировки) в режим "Descending" (По убыванию), кнопка "Изменить".

Мы задали Поля и Фильтры, но осталось сообщение об ошибке: "Display "Страница" uses a path but the path is undefined." Исправим её. Переходим на Представление "Страница" и задаем этот самый путь. В разделе "Page settings" щелкаем по ссылке "None" и задаем относительный путь к представлению "Страница" для нашего нового Views. Например, "news". Кнопка "Изменить".

Сообщение об ошибке пропало и если создана хотя бы одна новость, то в разделе "Live preview" появится результат работы нашего Views.
Нажимаем кнопку "Сохранить". Наш Views уже работает и доступен по адресу: http://имя_сайта/news, но выглядит пока совсем не так, как планировалось.

Вернемся к ТЗ. На странице, доступной из главного меню (1), нужно вывести тизеры (2) всех новостей с разбивкой по 10 шт. на экран (3).

(1) Переходим на представление "Страница" и в разделе "Page settings" щелкаем ссылку "No menu" в параметре "Меню". Переключаем меню на режим "Normal menu entry" и записываем Заголовок - "Новости". Из списка "Меню" выбираем "Основные ссылки". Кнопка "Изменить".

(2) Для представления "Страница" в разделе "Поля" нажимаем плюсик, отмечаем "Материал: Teaser", Кнопка "Добавить". Удаляем из заголовка слово Teaser, остальное здесь можно не трогать. а теперь ИНТЕРЕСНОЕ. У нас есть два способа зафиксировать внесенные изменения: кнопкой "Override" и кнопкой "Update default display". Во втором случае мы изменим параметры для представления Default, которые будут наследоваться остальными представлениями. А так как в представлении Блок нам тизер не нужен, то нажимаем кнопку "Override", перекрывая тем самым наследуемые настройки для этого представления. Теперь нажимаем кнопку "Изменить". Обратите внимание, что курсивное начертание в списке полей для представления Страница изменилось на прямое. Это значит, что список выводимых полей больше не наследуется в представлении Страница, но все ещё наследуется в представлении Блок.

(3) Разбивкой на страницы управляет параметр "Items to display:" в разделе "Basic settings". По умолчанию, он равен 10, так что не трогаем его.
Кнопка "Сохранить". Со страницей закончили.

Переходим на представление "Блок". В разделе "Basic settings" изменяем параметр "Items to display:" = 5. Кнопкой "Override", кнопка "Изменить", кнопка "Сохранить".
В админке на странице /admin/build/block в разделе "Отключено" появился блок с именем "news: Блок". Выбираем для него место, например, "Правая колонка". Кнопка "Сохранить блоки". Напротив этого блока нажимаем ссылку Настроить и вводим заголовок "Новости сайта". Сохраняем.

Теперь все.

Рубрики: