Skip to main content
Темплейты для Drupal

Views: что это и с чем его едят

Модуль Views - один из важнейших модулей для Drupal. По сути это GUI для работы с базой данных сайта на Drupal. В принципе, все, что делает модуль Views можно делать без модуля, вручную составляя запросы к базе MySQL. Views же позволяет работать с базой данных, делать выборки, сортировки, фильтры и самые разнообразные манипуляции с содержимым, тем, кто не умеет работать с MySQL напрямую.

Сайт на Drupal без views - дело странное и, по сути, неразумное. Поэтому давайте-ка разберем, как пользоваться модулем, что он умеет, и как с ним обращаться.

Итак. Модули Views и Views UI включены. В разделе админки "Structure" появился пункт "Views". Создадим представление, на котором будем ставить эксперименты. Прежде чем это делать - добавьте несколько материалов, чтобы результат был виден сразу. 

При создании нового view нам предлагается задать базовые параметры - обязательно название представления, при необходимости - описание. Далее мы можем сразу указать с каким типом данных будем работать: комментарии, файлы, материалы(ноды), термины таксономии, пользователи, модули и темы. Оставим тип Content, тип материала у меня называется recipe, его я и буду использовать. Сортировку оставим как есть - по дате, от новых к старым.

Также при создании view можно указать, какой вариант мы будем строить - блок или страницу. В первом случае будет создан блок, который появится в списке блоков (Structure -> Blocks), во втором случае будет создана страница, для которой вы сможете указать путь, пункт меню и другие необходимые параметры. Начнем с блока. При тех данных, что заполнены на скриншоте выше - мы получим блок, в котором выводятся 5 последних материалов типа recipe на сайте. Нажимаем "Continue & Edit" и смотрим что будет дальше.

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

А можем мы не мало: изменить формат вывода представления, добавить дополнительные поля и данные о ноде, изменить критерии выборки, задать дополнительные условия сортировки, настроить ограничения доступа к этому блоку, создать "шапку" и "подвал" представления, изменить количество выводимых материалов, добавить постраничный вывод. Блок Advanced рассмотрим чуть позже.

Начнем с того, что добавим несколько полей в наш view. Например, дату публикации, количество комментариев, и термины таксономии, к которым материалы относятся.

Как видно, я сразу выбрала из списка нужные поля, после нажатия кнопки Apply, появятся формы настройки этих полей. Сначала, пожалуй, будет удобнее добавлять каждое поле по отдельности.

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

Конечный внешний вид представления зависит от темы и ваших познаний в css. Но кое-что мы все таки можем изменить. Обратите внимание на блок Format. В нем есть два пункта: Format и Show.  Выберем формат представления Grid, в поле "Number of columns" поставим 2. Теперь новые материалы выводятся в две колонки.

А может выглядеть вот так:

 

Или так:

Переходим к настройкам блока. Первый пункт блока - "Block name". Это административное название, которое будете видеть только вы, например, в списке блоков (Structure -> Blocks). Хотите - меняйте, не хотите - и ладно.

А следом у нас идет Acsess - параметры доступа к блоку. По умолчанию выставлен Permission - View published content. Это значит, что блок увидят те, у кого есть право просматривать опубликованный контент. Жмем ссылку Permission и видим, что можно назначить видимость блока для определенных ролей или убрать вовсе.

Header и Footer блока. Замечательные возможности. В отличие от Views 2, который использовался в Drupal 6, views 3 позволяет "воткнуть в шапку и подвал блока view не только текст (text area и unfiltered text), но и другую вьюсу (view area), summary текущей вьюсы (result summary).

Та же самая картина при добавлении footer'а. Добавляем в шапку - Result Summary, в подвал - другое view. В предпосмотре видим:

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

Переходим к пункту pager. Тут все предельно просто: можно выводить конкретное количество материалов на одной странице; можно вывести, скажем, 15 материалов, по 5 на странице используя pager (тогда у нас будет вьюса состоящая из трех страниц); можно вывести все материалы, соответствующие критериям фильтров. Можно использовать full pager - в стандартном виде, как на странице yoursite.ru/node, либо mini pager - тогда "листалка" страниц будет выглядеть примерно так "< page 1 of 3 >".

Не забывайте сохранять изменения вашего view, нажимая на кнопку Save. Я, например, регулярно про нее забываю :) 

Это первая часть материала. Во второй части рассмотрим расширенные возможности Views (блок Advanced) - контекстные фильтры, зависимости и т.д., а в третьей части будут примеры views с разными "фишками".

6

Comments

Дмитрий's picture
Дмитрий

Добрый день.
Могли бы вы разъяснить такой момент или подсказать направления поиска информации:
Можно ли Views,ом сделать такой блок (выборки материалов по нескольким параметрам)
Нечто на подобии фильтра в яндекс маркете?
У нод будет несколько дополнительных не типичных полей к примеру (это сайт медицинских статей, нужно их структуировать так, что бы можно было легко находить нужный материал и соответственно создавать аналогичный и комментировать) Дата написания (не статьи, ноды, а первоисточника) материала, место написания, пока не определился. что-то на подобии тегов - клинического использования информации (место, время, название заведения).
То есть поля достаточно типичные и повторяющиеся но их будет явно больше, чем обычно используется. И встала задача обеспечить удобный поиск (или выборку) по этим полям.

Мария Шерскова's picture
Мария Шерскова

Именно с помощью views фильтры и делаются. Нужные фильтры вы добавляете в блоке FILTER CRITERIA. Чтобы у пользователя была возможность делать самому выборку по этим параметрам, включаете для фильтров параметр exposed. И для пущей красоты можно использовать дополнительные модули, например, Better exposed filter.

Александр's picture
Александр

Здравствуйте. Подскажите, есть ли возможность редактирования структуры шаблона views?

Мария Шерскова's picture
Мария Шерскова

Посмотрите вот эту статью - http://sherskova.ru/drupal/148-0
Там речь идет о D6, но в приницпе аналогично и для D7.

 

Андрей's picture
Андрей

Здравствуйте,можно ли в Views создать блок который будет менять изображение в Header'е в зависимости от страницы на которой я нахожусь?
Спасибо

Мария Шерскова's picture
Мария Шерскова

Это можно сделать и без вьюсов. Например, модулем Header Image.

Через Views тоже можно, но неэффективно: вам нужно к каждой странице прицепить поле, и на каждой же странице выводить блок с картинкой по аргументу. Но что, если вам нужно на двух страницах сделать одинаковые картинки? А если таких страниц 50? Вы будете 50 раз одну  и ту же грузить?

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