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

Главные вкладки

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 16 июня 2006 в 19:10

По многочисленным просьбам трудящихся и идя навстречу очередному съезду написал небольшую инструкцию по первым шагам в работе с модулем 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 очень гибок и перспективен!

Комментарии

Аватар пользователя edhel edhel 19 июня 2006 в 6:17

views уже реально кто-то использует? Он вроде еще бета?..

А category кто-нибудь пробовал юзать в жизни?

Вот бы доделали views + category (вместо taxonomy) + flexinode (как следует)! Друпал был бы the best однозначно!

Аватар пользователя News News 20 июня 2006 в 11:34

Господа, вы меня в депрессию вгоняете...)

В контексте не только этой темы, но и предыдущих тем про тормоза: вызывает сомнения скорость работы Drupal и Views в частности.

Я планирую на своем проекте сделать сложнокомпонованную титульную страницу для зарегистрированных пользователей.
1) Чтобы на титул юзеру выводились только статьи из рубрик на которые он "подписан". 2) Чтобы под каждым анонсом статьи выводились заголовки трех последних комментариев, причем, только из числа отмодерированных. 4) Чтобы отображалось число нечитанных комментариев в этой статье. 5) Отображался рейтинг статьи. 6) 7) И далее в том же духе...

Как видите, получается динамичная сборка странницы по алгоритму.
Насколько можно спрогнозировать тормознутость такой сложногенерируемой страницы у Друпала?
При каком количестве посещений это потребует уже выделенного сервера? Или придется забить на такие сложные заморочки с удобногенерируемой под клиента страницей и делать всё как все?

Аватар пользователя vadbars@drupal.org vadbars@drupal.org 20 июня 2006 в 14:15

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

Аватар пользователя Jeremic Jeremic 24 июня 2006 в 9:33

Как использовать фильтр(такое возможно), чтобы получить вывод следующей структуры
Подсловарь1
-Терм11
-Терм12
Подсловарь2
-Терм21
-Терм22
где подсловарь1 и подсловарь2 соответсвенно подсловари словаря таксономии.
Так можно сделать??? Или view выводит только термы? Мне бы надо чтобы
по порядку шел подсловарь, потом его термы, потом следующий подсловарь и его термы.

Аватар пользователя MDD MDD 11 апреля 2007 в 18:01

Уважаемый Вадим, а как ограничить число выводимых символов в каждой строке таблицы Views и связать их (с линковать) с полным представлением данных?

Аватар пользователя RISK RISK 23 октября 2007 в 3:02

В связи с возросшим количеством вопросов по модулю Views и в связи с окончание очередного съезда, согласно решения ЦК ВДП(б), к предстоящему юбилею этого поста оформил данную информацию в виде учебника:

Руководство по Views