Как создать табличный вид с помощью модуля Views

Первой в моем блоге на сайте русскоязычных друпаллеров drupal.ru появилась робкая запись-вопрос «Идет ли здесь работа по локализации (русификации) Drupal 4.7?» (15 мая 2006 г.). А в июне я уже почувствовал себя гуру и решил написать инструкцию по использованию только создававшегося тогда модуля Views для Drupal 4.7. Сейчас эти [[http://drupal.ru/node/1786 заметки]] из блога на drupal.ru представляют только архивную ценность, но для меня они значимы, поэтому — пусть будут.//

По многочисленным просьбам трудящихся и идя навстречу очередному съезду написал небольшую инструкцию по первым шагам в работе с модулем Views.
1. Установите модуль Views. Если вам потребуются поле «прикрепленные файлы», то добавьте в каталог /modules/Views/modules файл http://drupal.org/files/issues/views_upload.inc (он пока — 16.06.06 — не входит в стандартную поставку модуля). Включите модуль на странице /admin/modules/.
2. В меню появится пункт «views» (виды, /admin/views). Заходим туда и выбираем закладку «add» (добавить, /admin/views/add). Будем создавать табличный вид на странице (блоки с таблицей делаются аналогично). Для этого:
— В разделе «Basic Information» (Основная информация) заполняем поля Name (название вида) и Decription (его описание).
— В разделе «Page» (Страница) ставим галочку на «Provide Page View» (Страничный вид), пишем URL (адрес), по которому будет видна наша страница с таблицей (например, «my1stview»).
«ViewType» (Тип вида) выбираем, естественно, «Table View».
Заполняем «Title» (Заголовок страницы), ставим галку на «Use Pager» (если будет много строк в таблице, то таблица разобьется на несколько страниц, а внизу каждой страницы появится скроллер страниц).
— В разделе «Fields» выбираем последовательно поля для нашей таблицы. Для этого из выпадающего списка полей выбираем нужный тип и нажимаем кнопку «Add Field» (Добавить поле).
Название поля в выпадающем меню обычно состоит из типа поля, двоеточия его наименования и в скобках его «технического» названия field_XXXX. У меня это что-то вроде «Текст: Район (field_rayon)», т.е. текстовое поле «Район» имеет название field_rayon. (Эти поля добавляются в Views если вы создавали новый тип материала с помощью модулей CCK и taxonomy. В принципе возможно пользоваться модулями flexinode и Category, но там возможны разночтения с этой инструкцией, поскольку я ими не пользуюсь).
Еще можно добавить в таблицу поля других типов, например «Материал: Заголовок» (Node: Title). Оно удобно тем, что там можно поставить опцию «With updated mark» (с отметкой об обновлении) и все новые строки будут помечаться словом или значком «New!». Если нужно, добавьте поля «Время размещения» или «Время обновления», «Автор» и т.п. Если нужна ссылка на категорию («танки», «вертолеты») — добавьте поле «Taxonomy: Terms for …».
Если вы добавили views_upload.inc, то в списке полей у вас появится возможность выбрать поля, описывающие прикрепленные к материалам файлы — Id (идентификатор), Name (название файла) или Path (путь к нему). Поле Path можно показывать просто как текст, а можно как ссылку для закачки. Надеюсь, ясно, что речь идет о файлах, которые можно прикреплять к любому материалу, если работает модуль upload. Если к материалу прикреплено несколько файлов, то в таблице будет показано несколько строчек про этот материал, но с разными прикрепленными файлами в каждой из строк.
Выбранное поле добавляется в список полей (колонок) таблицы. Можно их сразу упорядочивать, а можно сначала просто все нужные добавить, а потом заняться порядком их расположения и другими параметрами. Например, после добавления поля можно написать, как будет называться в таблице колонка данных с этим полем (label), будет ли возможность сортировать таблицу по данному полю и нужна ли сортировка по умолчанию (по убыванию или по возрастанию). Пользуясь кнопками с изображением стрелок можно передвинуть нужное поле выше или ниже в списке отобранных полей (соответственно в таблице колонка с этим полем окажется левее или правее). Ошибочно выбранное поле можно удалить кнопкой с изображением корзины. Так что не бойтесь экспериментировать — выбирайте непонятное поле, а потом смотрите, что появляется в таблице. Не то? — удаляем.
— Аналогично в разделе «Filters» добавляем фильтры, то есть условия отбора данных в таблицу. Вам ведь нужны не все данные, а только определенные (отобранные по дате, по типу и т.п.). Например, в моем случае добавлен еще фильтр «Taxonomy: Terms for»-«Is One Of»-«Долевка/Вторичка», т.е. показывать только материалы из этих категорий («одно из» — «Долевка или Вторичка»). Если вы добавили views_upload.inc, то можно, например, указать, что вам нужны только строки таблицы с прикрепленными файлами.
Рекомендуется всегда добавлять к вашим фильтрам фильтр «Node: Published»-«Equals»-«Published», чтобы показывать только разрешенные к публикации материалы, а не все, содержащиеся в базе.
Вот практически и все, нажимаете кнопку Save (Сохранить) и эта таблица становится доступной по тому URL, который ей назначили выше (например, my1stview).
3. Созданный вид можно оформлять дальше. Например, можно добавить текст до и после таблицы, а также текст, который будет появляться, если таблица окажется пустой (нет данных, соответствующих вашим условиям). Можно указать, какой пункт меню должен быть создан для этой таблицы. Вы можете указать, сколько строк должно быть на каждой странице (если строк больше заданного числа, появляется скроллер «< < на первую страницу < предыдущая 1 2 3 следующая > на последнюю страницу > >»).
Можно указать, что в навигационном меню (т.н. «хлебные крошки», breadcrumb) не нужно делать первый пункт со ссылкой на главную страницу сайта. Можно определить, по какому критерию отсортировать полученную таблицу целиком (раздел «Sort Criteria».
4. Чуть посложнее организовать таблицу с возможностью для пользователей самим отбирать записи с определенными условиями. Это раздел «Exposed Filters» (пользовательские фильтры). Если в разделе «Filters» вы нажмете для какого-либо фильтра кнопку «Expose» (выставить, типа «Предоставить фильтр»), то он попадет в раздел «Exposed Filters» и над вашей таблицей появится выпадающий список, с помощью которого пользователь может сам определять, что показывать в таблице, а что нет.
У пользовательских фильтров есть свои весьма интересные настройки, с которыми можно «поиграть», чтобы получить фильтры нужного вам вида.
5. Самый «темный лес» для меня пока — раздел «Arguments», который позволяет различным образом группировать ваши данные. Например, там можно добиться, чтобы данные вашей таблицы были показаны в виде ссылок и небольшой статистики: » — танки (5), — вертолеты (1)».
Каждому способу группировки можно определить дополнительный параметр к ссылке и вызывать с помощью такой измененной ссылки нужную вам модификацию вида.
6. Готовый вид можно экспортировать во фрагмент PHP-кода, который потом можно вставить, например, в PHP-код вашей страницы! Или объединить несколько таблиц на одной странице. Или экспортировать вид, подправить его вручную (сменить имя, несколько несущественных правок) и вновь импортировать, получив подобный начальному вид гораздо быстрее, чем вы бы делали это стандартным путем, заполняя поля друг за другом.
Модуль Views очень гибок и перспективен!