Создание на CMS Drupal (Друпал) архива документов. Часть 4

На протяжении этой части статьи мы с вами создадим при помощи модуля View три представления: список документов, созданных пользователем; список документов на которые ссылается текущий; список документов, которые ссылаются на текущий. Все эти представления будут использовать один аргумент в качестве фильтра.

Список документов, созданных пользователем

Начнем со списка документов, созданных пользователем. Создадим новое представление, для этого зайдем в меню Site building -> Views -> Add. Откроется страница создания нового представления. Заполним следующие реквизиты:

  • View name: user_doc;
  • View description: Документы созданные пользователем;
  • View type: Node,

жмем кнопку Next и переходим к настройкам нашего представления. На странице с настройками нужно добавить и изменить следующие параметры:

  1. В разделе Basic settings:
  • Title (название страницы, которую увидит пользователь): Документы пользователя;
  • Style (стиль, в котором будут отображаться результаты поиска - таблица): Table;
  • Use pager (если в результате поиска найдется больше 20 документов, то включится механизм разбиения на страницы): Full pager;
  • Items per page (тут мы указываем количество документов выводимых на одной странице): 20;
  • Distinct (указываем, что нам нужно выводить только каждый документ только один раз): установить галочку Distinct;
  • Empty text (этот текст увидит пользователь, если результат поиска окажется пустым): На текущий момент пользователь не является автором ни одного документа.
  1. В разделе 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.
  1. В разделе Fields добавим следующие поля, они будут выводится в качестве колонок нашего списка:
  • Node: Title - название документа. Label: Документ; Установим для поля галочку Link this field to its node, при этом название документа станет ссылкой на него.
  • Node: Body - в теле документа у нас хранится его назначение. Label: Назначение;
  • Content: Состояние (field_doc_status) - состояние документа.
  1. В разделе 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 и переходим к настройкам нашего представления. На странице с настройками нужно добавить и изменить следующие параметры:

  1. В разделе Basic settings:
  • Title: Документ, ссылающиеся на текущий;
  • Style: Table;
  • Use pager: Full pager;
  • Items per page: 20;
  • Distinct: установить галочку Distinct;
  • Empty text: На текущий документ не ссылается ни один из имеющихся в архиве документов.
  1. В разделе 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.
  1. В разделе 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, при этом имя автора станет ссылкой на него.
  1. В разделе 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 и переходим к настройкам нашего представления. На странице с настройками нужно добавить и изменить следующие параметры:

  1. В разделе Basic settings:
  • Title: Документ ссылается на;
  • Style: Table;
  • Use pager: Full pager;
  • Items per page: 20;
  • Distinct: установить галочку Distinct;
  • Empty text: Настоящий документ не ссылается на другие документы.
  1. В разделе Relationships добавим то поле, данные по которому нас интересуют. В данном случае это Content: Документы, на которые ссылается настоящий документ (field_doc_ref). Ни каких дополнительных настроек эгото поля делать не будем.
  2. В разделе 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.
  1. В разделе 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, при этом имя автора станет ссылкой на него.
  1. В разделе Sort criteria добавим параметры сортировки:
  • Content: Дата (field_doc_data) сортировать будем по дате вступления в силу документа, при чем в начале списка должны оказаться самые свежие документы. Для этого параметр Sort order установим в Descending.

Сохраним настройки и проверим работоспособность нашего нового представления.

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

4
Ваша оценка: Нет Рейтинг: 4 (2 голоса)