Вывод нод определенной ноды Views, аргументы, связанные ноды

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

Аватар пользователя nleo nleo 21 декабря 2011 в 13:51

Пытаюсь построить связку, чтобы выводить ноды привязанные к самой новой ноде определенного типа. View reference, Entity reference, Views

Что мне ввести в поле Value, чтобы туда подставлялся переданный аргумент (id ноды)?

ВложениеРазмер
Иконка изображения views.png399.34 КБ

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 21 декабря 2011 в 20:20

Чтобы подставлялся аргумент - это CONTEXTUAL, а чтобы обратится к содержимому связанному через references это RELATIONSHIPS, это в все разделы Вашего views

Аватар пользователя biozz biozz 26 января 2012 в 13:04

Добрый день, а подскажите пожалуйста, у меня такая же проблема
Есть один тип материала и другой, я связал через ноде референс второй тип с первым, теперь надо на страницы первого типа вывести все материалы которые я в нем отметил второго типа.
Вы советуете использовать во вьюхе не Контекстные фильтры, а Взаимосвязи ? Если да то почему то не получается, или я как то не так делаю.

Аватар пользователя sas@drupal.org sas@drupal.org 26 января 2012 в 17:29

У ТС задача аргумент забрать - поэтому CONTEXTUAL.
А Вы сразу отмечаете в 1 м с какими он связан поэтому в поле Reference этого материала у Вас уже список - Вам ндо еговывести в том преставлении какой Вам нужен, это не views, "показ" поля formatter, если views block то вывод на ноде того поля через viws опять же с formatter для поля.

Аватар пользователя biozz biozz 26 января 2012 в 19:52

Я уже решил свою задачу, кому будет интересно вот очень полезная инфа, по ней и разобрался, и переделал на 7 -ку. http://smihworld.ru/sozdanie-na-cms-drupal-drupal-arkhiva-dokumentov-cha...
Вся загвоздка была в взаимосвязях и в цеплянии их к выводимым полям. В общем разобратся не сложно, если немного разбираешся во ВЬЮХах, если что могу рассказать как именно делал.

Аватар пользователя witch witch 2 мая 2012 в 15:09

biozz wrote:
В общем разобратся не сложно, если немного разбираешся во ВЬЮХах, если что могу рассказать как именно делал.

Не могли бы Вы мне помочь. Пробую и так и сяк, не выходит что-то.
У меня есть тип- Каьтегории, и тип Товар. В типе Товар есть поле связь на тип Категории.
На странице определенной категории я хочу вывести список связанных с ней товаров.
Читала ссылку, что Вы показали, но почему то у меня не вышло. Объясните плиз на моем примере, если не трудно

Аватар пользователя biozz biozz 2 мая 2012 в 15:31

Я думаю, что так уж извращаться не нужно с типами материалов.
лучше для категории ввести таксономию, в типе товар вывести поле ссылка на термин и во всех товарах выставить нужную категорию.
потом данные категории можно вывести через обычное представление taxonomy/term/% (это стандартное представление оно должно быть в списке не активное, после включения переопределит все страницы таксономии и будет выводить через вью товары так как вы настроете поля во вью)

Аватар пользователя witch witch 2 мая 2012 в 15:33

biozz wrote:
Я думаю, что так уж извращаться не нужно с типами материалов.
лучше для категории ввести таксономию, в типе товар вывести поле ссылка на термин и во всех товарах выставить нужную категорию.
потом данные категории можно вывести через обычное представление taxonomy/term/% (это стандартное представление оно должно быть в списке не активное, после включения переопределит все страницы таксономии и будет выводить через вью товары так как вы настроете поля во вью)

Я не могу использовать таксономию, т к страницы категорий товаров содержат текст, какие то файлы для скачивания, картинки и прочее, в таксономии же, по крайней мере в друпале 6 возможно одно простое поле текстовое и все.. поэтому пришлось делать через типы материалов.. значит это нереально вывести во вьюсе как мне охота?

Аватар пользователя biozz biozz 2 мая 2012 в 16:07

Тут говорилось о семерка, по этому я так и предложил.
Можете более подробно изучить ссылку которую я давал выше. там все расписано по пунктам, если повторять все 1 в 1 не пренебрегая никакой информацией то можно все сделать.
Вам конкретно нужен второй пункт "Список документов, которые ссылаются на текущий"

Аватар пользователя witch witch 2 мая 2012 в 16:17

biozz wrote:
Тут говорилось о семерка, по этому я так и предложил.
Можете более подробно изучить ссылку которую я давал выше. там все расписано по пунктам, если повторять все 1 в 1 не пренебрегая никакой информацией то можно все сделать.
Вам конкретно нужен второй пункт "Список документов, которые ссылаются на текущий"

Спасиб, попробую еще раз, или раз 10 Smile

Аватар пользователя biozz biozz 2 мая 2012 в 16:19

Просто тяжело заочно найти ошибку, если не получится выставьте скриншоты я попробую посмотреть, может что-то замечу.

Аватар пользователя witch witch 2 мая 2012 в 16:28

biozz wrote:
Просто тяжело заочно найти ошибку, если не получится выставьте скриншоты я попробую посмотреть, может что-то замечу.

Спасибо за помощь! Получилось в итоге. Моя проблема была в том, что я зайдя в contextual filter не выбрала радиобаттн Provide default value и не отметила там Content ID from URL, вместо этого отмечала первый радиобаттн

Аватар пользователя biozz biozz 24 июня 2014 в 0:14

Спустя два года нужно было решить ту же проблему, но сайт с которого брал инфу уже не работает. Нашел страницу на веб архиве, может мне и кому -то еще поможет

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

На протяжении этой части статьи мы с вами создадим при помощи модуля 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, хотя это и не единственный способ вывода. Как это сделать вы узнаете в пятой части этой статьи.