На протяжении этой части статьи мы с вами создадим при помощи модуля View три представления: список документов, созданных пользователем; список документов на которые ссылается текущий; список документов, которые ссылаются на текущий. Все эти представления будут использовать один аргумент в качестве фильтра.
Список документов, созданных пользователем
Начнем со списка документов, созданных пользователем. Создадим новое представление, для этого зайдем в меню Site building -> Views -> Add. Откроется страница создания нового представления. Заполним следующие реквизиты:
- View name: user_doc;
- View description: Документы созданные пользователем;
- View type: Node,
жмем кнопку Next и переходим к настройкам нашего представления. На странице с настройками нужно добавить и изменить следующие параметры:
- В разделе Basic settings:
- Title (название страницы, которую увидит пользователь): Документы пользователя;
- Style (стиль, в котором будут отображаться результаты поиска - таблица): Table;
- Use pager (если в результате поиска найдется больше 20 документов, то включится механизм разбиения на страницы): Full pager;
- Items per page (тут мы указываем количество документов выводимых на одной странице): 20;
- Distinct (указываем, что нам нужно выводить только каждый документ только один раз): установить галочку Distinct;
- Empty text (этот текст увидит пользователь, если результат поиска окажется пустым): На текущий момент пользователь не является автором ни одного документа.
- В разделе Arguments добавим один единственный аргумент User: Uid и заполним его реквизиты:
- Title: Пользователь;
- Action to take if argument is not present (тут мы указываем какую информацию выводить, если аргумент не будет передан. В данном случае выведется текст из параметра Empty text, который мы с вами заполнили выше): Display empty text;
- Validator (тут мы устанавливаем проверку переданного аргумента, в нашем случае мы будем передавать ID пользователя): User;
- Type of user argument to allow (этот параметр относится к предыдущему и указывает, что в аргументе допустимы только ID существующих пользователей): Only allow numeric UIDs;
- Action to take if argument does not validate (тут мы указываем, что делать, если указан неверный аргумент, например ID пользователя, которого нет на нашем сайте. В этом случае выведется текст из параметра Empty text): Display empty text.
- В разделе Fields добавим следующие поля, они будут выводится в качестве колонок нашего списка:
- Node: Title - название документа. Label: Документ; Установим для поля галочку Link this field to its node, при этом название документа станет ссылкой на него.
- Node: Body - в теле документа у нас хранится его назначение. Label: Назначение;
- Content: Состояние (field_doc_status) - состояние документа.
- В разделе Sort criteria добавим параметры сортировки:
- Content: Дата (field_doc_data) сортировать будем по дате вступления в силу документа, при чем в начале списка должны оказаться самые свежие документы. Для этого параметр Sort order установим в Descending.
Сохраним настройки и проверим работоспособность нашего свежесозданного представления. Это можно сделать не выходя со страницы с настройками. Наверняка вы обратили внимание, что ниже основных настроек находится раздел Live preview, в котором виден сформированный, с помощью наших настроек, запрос к базе данных и, собственно, результат выполнения этого запроса. Там же есть поле Arguments, которое используется для проверки работоспособности представления, если используются аргументы. В своем архиве документов, я создал один документ еще на прошлых уроках. Создавал я его под администратором, т.е. под пользователем с ID = 1 (в базе данных нашего сайта это параметр Uid пользователя). Наверняка вы тоже для примера создали несколько документов именно под первым созданным пользователем, поэтому в поле Arguments впишите цифру 1 и нажмите кнопку Preview. Если вы увидели документы, созданные пользователем с Uid = 1, то вы все сделали правильно.
Список документов, которые ссылаются на текущий
Создаем новое представление и заполняем следующие реквизиты:
- View name: doc_refferers;
- View description: Документы, ссылающиеся на текущий;
- View type: Node,
жмем кнопку Next и переходим к настройкам нашего представления. На странице с настройками нужно добавить и изменить следующие параметры:
- В разделе Basic settings:
- Title: Документ, ссылающиеся на текущий;
- Style: Table;
- Use pager: Full pager;
- Items per page: 20;
- Distinct: установить галочку Distinct;
- Empty text: На текущий документ не ссылается ни один из имеющихся в архиве документов.
- В разделе Arguments добавим один единственный аргумент Content: Документы, на которые ссылается настоящий документ (field_doc_ref) и заполним его реквизиты:
- Title: Документ ссылается на;
- Action to take if argument is not present (тут мы указываем какую информацию выводить, если аргумент не будет передан. В данном случае выведется текст из параметра Empty text, который мы с вами заполнили выше): Display empty text;
- Validator (тут мы устанавливаем проверку переданного аргумента, в нашем случае мы будем передавать ID Документа): Node;
- Types (этот параметр относится к предыдущему и указывает, что в аргументе должен быть только ссылкой на материалы типа Документ): Документ;
- Argument type (уточняем, что аргумент - это ID существующего документа): Node ID;
- Action to take if argument does not validate (тут мы указываем, что делать, если указан неверный аргумент, например ID документа, которого нет на нашем сайте. В этом случае выведется текст из параметра Empty text): Display empty text.
- В разделе Fields добавим следующие поля, они будут выводится в качестве колонок нашего списка:
- Node: Title - название документа. Label: Документ; Установим для поля галочку Link this field to its node, при этом название документа станет ссылкой на него.
- Node: Body - в теле документа у нас хранится его назначение. Label: Назначение;
- Content: Состояние (field_doc_status) - состояние документа;
- User: Name - автор документа. Label: Автор; Установим для поля галочку Link this field to its user, при этом имя автора станет ссылкой на него.
- В разделе Sort criteria добавим параметры сортировки:
- Content: Дата (field_doc_data) сортировать будем по дате вступления в силу документа, при чем в начале списка должны оказаться самые свежие документы. Для этого параметр Sort order установим в Descending.
Сохраним настройки и проверим работоспособность нашего нового представления.
Список документов на которые ссылается текущий
Самое "вкусное" я оставил на последок. Обратите внимание, что нам нужно вывести данные о документах, ссылки на которые хранятся в поле Content: Документы, на которые ссылается настоящий документ (field_doc_ref). Но если вы попытаетесь добавить поля в разделе Fields, то вы найдете там данные только по текущему документу и само поле field_doc_ref. Как раз для доступа к данным поля field_doc_ref мы и будем использовать возможности раздела Relationships. Давайте создадим новое представление с такими параметрами:
- View name: doc_referense;
- View description: Документ ссылается на;
- View type: Node,
жмем кнопку Next и переходим к настройкам нашего представления. На странице с настройками нужно добавить и изменить следующие параметры:
- В разделе Basic settings:
- Title: Документ ссылается на;
- Style: Table;
- Use pager: Full pager;
- Items per page: 20;
- Distinct: установить галочку Distinct;
- Empty text: Настоящий документ не ссылается на другие документы.
- В разделе Relationships добавим то поле, данные по которому нас интересуют. В данном случае это Content: Документы, на которые ссылается настоящий документ (field_doc_ref). Ни каких дополнительных настроек эгото поля делать не будем.
- В разделе Arguments добавим один единственный аргумент Node: Nid и заполним его реквизиты:
- Title: Документ;
- Action to take if argument is not present (тут мы указываем какую информацию выводить, если аргумент не будет передан. В данном случае выведется текст из параметра Empty text, который мы с вами заполнили выше): Display empty text;
- Validator (тут мы устанавливаем проверку переданного аргумента, в нашем случае мы будем передавать ID Документа): Node;
- Types (этот параметр относится к предыдущему и указывает, что в аргументе должен быть только ссылкой на материалы типа Документ): Документ;
- Argument type (уточняем, что аргумент - это ID существующего документа): Node ID;
- Action to take if argument does not validate (тут мы указываем, что делать, если указан неверный аргумент, например ID документа, которого нет на нашем сайте. В этом случае выведется текст из параметра Empty text): Display empty text.
- В разделе Fields добавим следующие поля, они будут выводится в качестве колонок нашего списка:
- Node: Title - название документа. Relationship (Обратите внимание, что после добавления поля в раздел Relationships у нас появился одноименный параметр в настройках добавляемых полей раздела Fields. Теперь, мы можем указать, что данные нас интересуют не о текущем документе, а о документе из поля field_doc_ref): Документы, на который ссылается настоящий документ; Label: Документ; Установим для поля галочку Link this field to its node, при этом название документа станет ссылкой на него.
- Node: Body - в теле документа у нас хранится его назначение. Relationship: Документы, на который ссылается настоящий документ; Label: Назначение;
- Content: Состояние (field_doc_status) - состояние документа. Relationship: Документы, на который ссылается настоящий документ;
- User: Name - автор документа. Relationship: Документы, на который ссылается настоящий документ; Label: Автор; Установим для поля галочку Link this field to its user, при этом имя автора станет ссылкой на него.
- В разделе Sort criteria добавим параметры сортировки:
- Content: Дата (field_doc_data) сортировать будем по дате вступления в силу документа, при чем в начале списка должны оказаться самые свежие документы. Для этого параметр Sort order установим в Descending.
Сохраним настройки и проверим работоспособность нашего нового представления.
Мы с вами подготовили три последних представления, теперь нам осталось их вывести в нужных местах документа и профиля пользователя. Это мы сделаем при помощи модуля Panels, хотя это и не единственный способ вывода. Как это сделать вы узнаете в пятой части этой статьи.
Закладки/поиск этой статьи в: