Контекстные фильтры и связи

В этом уроке мы рассмотрим работу с контекстными фильтрами и связями.

У типа материалов Фильм есть поле В ролях. Это поле типа Entity Reference ссылающееся на типа материалов Роль.

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

Страница фильма

С помощью модуля Views (Представления) мы сделаем отображение актеров более интересным.

Для начала скроем стандартный вывод поля В ролях. Переходим на страницу управления отображением полей для типа материалов Фильм.

Ссылка на страницу управления полями

Переместим поле В ролях в секцию Скрытый и сохраним настройки.

Скрыть поле В ролях

Теперь перейдем в раздел Представления и нажмем на ссылку Добавить новое представление.

Ссылка Добавить новое представление

Назовем новое представление Актёры (машинное имя actors). В поле Показать выберем Содержимое типа Актёр.

Создание представления актеры

Снимаем галочку напротив Создать страницу, так как страничное отображение нам не нужно, а вместо этого поставим галочку напротив Создать блок. Задаем заголовок блока В ролях: и выбираем формат отображения Сетка. Нажимаем Продолжить редактирование.

Теперь, если мы взглянем на предпросмотр блока, то увидим имена актеров выведенных в виде сетки.

Предпросмотр блока в ролях

Добавим поле Фото и еще раз взглянем на предпросмотр. Блок теперь выглядит значительно лучше.

Предпросмотр блока в ролях с изображением

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

Разворачиваем блок расширенных настроек.

Развернуть блок расширенных настроек

Нажимаем на кнопку Добавить в секции Связи.

Ссылка добавить связь

В открывшемся всплывающем окне добавляем связь Entity Reference: Связанная сущность. В описании этой связи написано, что ссылаться на Содержимое она будет через поле field_roles, что нам и требовалось.

Добавление связи Entity Reference

Далее мы меняем стандартный Идентификатор на более понятный - Исполнитель роли.

Настройки связи Entity Reference

Также необходимо поставить галочку Эта связь обязательна так как нам нужны только те актеры, которые привязаны к фильму. Нажимаем кнопку Применить (все отображения).

Настройки связи Entity Reference

Теперь, когда связь с типом материалов Фильм установлена, пришло время добавить контекстный фильтр с помощью которого будут отфильтровываться актеры для каждого конкретного фильма.

Нажимаем на кнопку Добавить в секции Контекстные фильтры.

Ссылка добавить контекстный фильтр

Находим и добавляем контекстный фильтр Содержимое: Nid и нажимаем кнопку Применить (все отображения).

Контекстный фильтр Содержимое Nid

Далее нам предлагается настроить этот фильтр. В поле Связь выберем ранее добавленную нами связь Исполнитель роли. Этим мы показываем, что ,в качестве аргумента для фильтрации, мы принимаем именно идентификатор фильма, а не актера.

В секции Когда значение фильтра не доступно выбираем пункт Передать значение по умолчанию и в поле Тип выбираем ID материала из URL. Это значит что, когда мы будем заходить на страницу фильма, его идентификатор (NID) будет передаваться в представление и по нему будут отбираться только те актеры, которые указаны в поле В ролях.

Нажимаем Применить (все отображения).

Настройки контекстного фильтра Содержимое Nid

Сохраняем представление.

Кнопка сохранить представление

Переходим в раздел Блоки.

Ссылка на раздел Блоки

Перемещаем блок В ролях в регион First sidebar (Первая боковая панель).

Размещение блока Актеры: В ролях

Нажимаем кнопку Сохранить блоки, чтобы закрепить позицию блока и переходим к настройке блока В ролях.

Ссылка на настройки блока Актеры: В ролях

В секции Настройки видимости выберем Тип материалов - Фильм, чтобы блок отображался только на странице фильма. Нажимаем Сохранить настройки.

Показывать блок только на странице типа материалов Фильм

Переходим на страницу фильма Пятый элемент. В блок В ролях действительно выводятся актеры сыгравшие роль в этом фильме. Значит представление работает правильно. Осталось только немного подправить внешний вид.

Страница фильма

Переходим на страницу редактирования представления и нажимаем на ссылку редактирования настроек формата отображения Сетка.

Ссылка на настройки формата отображения Сетка

Изменяем число столбцов на 2 и нажимаем Применить (все отображения).

Установка числа столбцов

Также изменим стиль изображения для поля Фото на Thumbnail (100x100) (как это делать мы уже рассматривали). Сохраняем представление и переходим обратно на страницу фильма.

Теперь блок В ролях выглядит гораздо лучше.

Красивое отображение блока В ролях

Посмотрим еще один пример страницы фильма.

Еще один пример отображения блока В ролях

В этом уроке мы рассмотрели пример работы с контекстными фильтрами и связями. В следующем уроке мы разберем такое понятие как агрегация.

Поделись с друзьями:

Комментарии

Так по примеру все ясно, а когда хочешь применить это к своему проекту то вхожу в ступор)

Я вот делал магазин на примере предыдущих уроков, теперь
вот мне необходимо выводить товар - "Компьютер":
Процессор: AMD A10
Жесткий диск: Seagate 500 GB
Видеокарта: Geforce 740
ну и т.д.
1)Необходимо чтобы при клике на Процессор - переходило в раздел Процессоры, а при клике на AMD A-10 на него же (ну тут понятно - ссылкой на товар),
а вот как на родительский установить связь (в данном случае Процессор)?
2)И где тогда создавать раздел процессоры, в котором будут подразделы например AMD, Intel
3) Какой шаблон пути добавить ссылкам /[node:title] , чтобы выводился полный путь вложений в категории, например site/complects/video/geforce740

1) Как я понял процессор это тип материалов. Можно сделать страничное отображение "Процессоры" в которое будут выводиться все материалы этого типа.

2) Создать словарь "Производители", а у типа материалов поле типа ссылка на термин ссылающееся на этот словарь.

3) Не совсем понял всю иерархию, но в связях можно найти "родительский термин", на ее основе можно построить полный путь.

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

и если ставлю ссылку на товар, то она ведет на товар в админке, а не на продукт в магазине

Ссылка на товар и должна вести в админку. Посетителям товары видны только на страницах отображений товаров. Надо делать ссылку на отображение товара.

Не знаю, чем дальше в лес, тем запутаннее)
1) Подменю вот примерно о таком я говорил http://elmir.ua/computer_equipment_components/, т.е. при переходе в комплектующие, показываются подкатегории, не пойму как реализовать(
2)

Надо делать ссылку на отображение товара.

А как ее сделать, в управлением полями там в списке выбора нет такого типа поля. Вот имею ввиду как тут ссылка на Core i5 http://keetouch.net/kompyuter-acer-aspire-xc-605 стоит, только не с помощью html, а связями друпала организовать можно это?
3) Как ссылку товаров сделать так, чтобы она полностью наследовала в адресе свои категории и подкатегории, а не просто из корня сайта сразу торчала http://keetouch.net/intel-core-i5-4440-31-ggc, а вот так http://keetouch.net/complects/processors/intel/intel-core-i5-4440-31-ggc

1) Создаете представление на основе словаря с категориями. Там есть контекстный фильтр Taxonomy term: Parent term (Родительский термин). На основе него можно построить отображение которое будет показывать подкатегории (то есть подтермины данного словаря для каждого родительского термина).

2) В этом примере как я понял одно отображение товара ссылается на другое. Это реализуется с помощью модуля Entity reference. В чем тут проблема?

3) Не уверен что это можно сделать "из коробки", да и смысла особого не вижу делать такие громоздкие пути. Я бы сделал что-то вроде: product/intel-core-i5-4440-31-ggc. Это можно сделать с помощью Pathauto.

Здравствуйте
Не разворачивая у себя Ваш сайт, попробовал пошагово за Вами. В контекстных ссылках всё перестало получаться. Просмотрел ещё раз - у Вас не описан материал Роль на который ссылается Entity Reference, соответственно его невозможно сделать. Опишите, пожалуйста, его, в первом уроке этой темы

Здравствуйте Алексей,
Там нет типа материалов Роль. Поле Роль ссылается на тип материалов Актер, то есть при создании фильмы мы выбираем актеров сыгравших роли в этом фильме. Ошибку в описании в первом уроке исправил.

Как заставить работать hierarchical select в модуле views? С учетом иерархии.

Никак. У Hierarchical Select пока нет интеграции с Views.

Здравствуйте, Денис, почему-то при добавлении контекстного фильтра в результате ничего не выводится. Стоит убрать фильтр или хотя бы галочку "обязательная связь" и актеры выводятся без привязки к фильму. При создании связи смущает наличие двух ссылок связанных сущностей: Entity Reference: Referenced Entity и Entity Reference: Связанная сущность. Ни с одной не работает.

Если вы имеете ввиду ничего не выводится в предпросмотре представления то так и должно быть. Так как мы добавили контекстный фильтр представление теперь отображает актеров только для определенного фильма. Попробуйте доделать урок до конца.

Не выводится именно на странице фильма. Т.е. либо все выводятся либо, если добавить фильтр, никого. Пересоздать представление естественно пробовал. Вот результат на http://jimko.besaba.com/ - без контекстного фильтра.

Вы наверное перепутали контекстный фильтр со связью. Связь должна быть по полю Роль а контекстный фильтр по Nid.

По второй ссылке (http://i63.fastpic.ru/big/2015/0213/31/29ad8446a07d67902e6f047b7195e631.png) под описанием фильма актеры и должны исчезнуть, так как мы специально убрали отображение актеров в этом месте - но отобразили список актеров иначе, сделав специальный блок слева от описания фильма.

В начале урока написано:

...С помощью модуля Views (Представления) мы сделаем отображение актеров более интересным.

Для начала скроем стандартный вывод поля В ролях. Переходим на страницу управления отображением полей для типа материалов Фильм.
...
Переместим поле В ролях в секцию Скрытый и сохраним настройки....

Ошибся, указав местоположение блока.
Вместо "...сделав специальный блок слева от описания фильма..." надо читать "...сделав специальный блок справа от описания фильма...".
:(

Кстати, а как редактировать свои комментарии на этом сайте?

Спасибо за Ваши уроки, в частности, благодаря этому уроку разобрался как работать с контекстными фильтрами (ну или надеюсь, что разобрался, но задачу на своем тестовом сайте смог сделать).

Но, к сожалению, не совсем смог понять принцип работы механизма связей.

У меня следующая задача.
есть два типа материала: "заметка" и "газета"
поля в типе материала "заметка": "Title", "Body", "Number"
поля в типе материала "газета": "Title", "Body", "Number", "Gazeta_pdf".
"Title", "body" - стандартные поля.
"Number" - имеет тип "целое число".
"Gazeta_pdf" - имеет тип "file"

Смысл в том, что материалами типа "заметка" оформляются различные статьи, которые затем верстаются, и на сайт выкладывается сверстанный pdf-файл в материал типа "газета". Так же материалы "заметка" выкладываются на сайте.
получается, что все статьи оптом можно посмотреть в сверстанной газете (используя материал "газета") и россыпью посмотреть статьи используя материал "заметка".

На мой взгляд между этими типами материалов можно установить связь через поле "Number", так как у "заметок" и "газеты", относящихся к одному номеру, это поле имеет одно и то же значение. По крайней мере при работе с базами на Delphi и Microsoft Access такая (или аналогичная) задача решается - когда из таблицы выбирается строка с определенным значением в конкретном поле :)

Идея в том, что бы в каждой опубликованной заметке (тип материала "заметка") помимо текста самой заметки размещать и ссылку на файл со сверстанной газетой - а это поле со ссылкой на файл получать из материала "газета".

Но вот как это сделать - так и не смог понять :(
Помогите, пожалуйста, с решением.

Вам нужно использовать модуль Entity reference. Этот модуль позволяет сделать поле типа "Ссылка на материал". То есть в типе материалов "Газета" у вас будет еще одно поле "Заметки" которое будет ссылаться на тип материала "Заметка" и в каждую газету вы сможете добавлять сколько угодно заметок. С помощью этого модуля также можно будет добавлять связи в представлениях и вытягивать газеты (одну или много) в которые входит заметка. Тоже самое для газет, можно вытянуть все заметки которые входят в газету.

Денис, спасибо за ответ, настроил.

Вопрос: Правильно ли я понял, что если не установлена какая-либо связь (через Entity reference, через Node reference, через словари таксономии или как-то иначе), воспользоваться связью не получится?

Получился механизм, с которым работать не совсем удобно - так как надо каждую заметку (тип материала "заметка") привязывать к конкретному материалу типа "газета".

Неудобство в следующем: в одном номере может быть около 10 и более таких заметок. номеров - 12 в течение года. Соответственно, придется выбирать конкретную заметку из списка более 100 материалов...и делать так 10 и более раз для каждого номера... что не есть хорошо.
:(

Вопрос: Можно как-то облегчить такую работу? Например, при привязывании заметки к газете (когда редактируется материал типа "газета") сделать фильтр при устанавливании связи? Или как-то автоматизировать процесс, например создаем материал типа "газета" и друпал сам привязывает к этому созданному материалу "заметки", удовлетворяющие некому критерию. Тем более, что каждая "заметка" имеет поле "Number", позволяющее отфильтровать нужные нам "заметки"

Единственное, что я нашел для облегчения жизни редактору при привязывании материалов "заметка" к материалу "газета" - установить виджет "Автодополнение", что бы по началу заголовка привязываемого материала можно было сужать список отображаемых "заметок".

В этом случае все-таки облегчается выбор конкретной заметки, но не облегчается процесс привязывания большого количества "заметок" к конкретной "газете"
:(

Как специалист по Drupal подскажите, пожалуйста?

В настройках поля "Заметка" (поле типа entity reference) вы можете выбрать Режим - Views. То есть вы можете создать представление с отображением типа Entity reference результат которого и будет отображаться в выпадающем списке при заполнении поля "Заметка", а этому представлению вы можете задавать любые фильтры. Например выводить только заметки которые еще не включены ни в одну из газет и отсортировать их по дате создания. Тогда список будет не таким большим что облегчит работу контент менеджеру.

Cпасибо за подсказку.
При реализации возникла проблема - выдается сообщение об ошибке: "Не найдено подходящих представлений. Создайте представление с отображением Entity Reference или добавьте подобное отображение к существующему представлению".
Я не понимаю как это сделать (как реализовать выполнение требования из сообщения об ошибке).

Как я понял, надо подключить модуль (Entity Reference View Widget), но вот дальше что-то не смог разобраться
:(

Или модуль Entity Reference View Widget подключать не надо и можно обойтись штатными средствами модуля views?

Мне где в новой вьюшке это Entity Reference указывать?
В каком разделе у вьюшки и что надо править?

Модули которые вы приводите тут не нужны. Сам по себе модуль Entity reference уже содержит в себе все необходимое. Вам нужно создать новое отображение типа Entity reference в любом из представлений (пример http://prntscr.com/6sdap4 ). В вашем случае это представление должно вытягивать материалы типа "Заметка". После этого все эти отображения будут доступны как вариант выбора. Сообщение об ошибке сейчас как раз говорит о том что нет ни одного отображения (display) типа Entity reference.

Спасибо, частично получилось то, что надо - частичнось заключается в том, что еще не совсем понял, как настроить передачу значения поля материала параметром в такую вьюшку.

В своем материале "газета" я сделал поле с:
- ТИПОМ "Entity Reference",
- ВИДЖЕТОМ "Флажки/переключатели"
При настройках этого поля указал ВЫБОР СУЩНОСТИ: "Views: выбрать из представления на основе Entity Reference".
Далее отображаются поля:
- Представление для выборки сущностей
- Аргументы представления

Никак не могу понять, каким образом передать требуемый параметр в представление - у меня есть специальное поле "Number" с номером, по значению которого хотелось бы отфильтровать результат в представлении Entity Reference.

В уроке Создание страницы с аргументом параметры передаются через путь:

Устанавливаем путь film-by-genre/% - такой-же как, тот который мы задали при создании отображения Жанры. Символ % означает, что вместо него будет передаваться параметр (в нашем случае это ID термина).

Но в этом случае такой механизм не работает, так как параметр "ПУТЬ" вообще отсутствует :(

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

Я не понял зачем вам передавать аргумент в это представление и как вы хотите чтобы это работало. Например вы создаете новый материал типа "Газета", поле номер при этом еще пустое, соответственно ни одна заметка не будет доступна для выбора. Как-то слишком сложно. Можно просто выводить названия заметок с префиксом номера. Например "3 - Заметка о чем-то" тогда достаточно в автокомплит ввести номер заметки и сразу будет видно все заметки этого номера.

Я не понял зачем вам передавать аргумент в это представление и как вы хотите чтобы это работало.

Планировалась такая технология работы.
В течение трех недель на сайте размещаются различные статьи (тип материала - "заметка").
В начале четвертой недели начинается подготовка к верстке бумажной версии газеты, для этого:
- Редактор оценивает материалы и ЧАСТЬ из статей, размещенных на сайте и не привязанных к какой-либо газете, может определить как статьи для бумажной версии. Может быть, конечно, и такая ситуация, что размещенные на сайте статьи все войдут в бумажную версию или наоборот - ни одна из размещенных статей не войдет в бумажную версию.
- Редактор создает заготовку новой газеты, создав материал типа "газета" и заполнив поля "Title", "Body", "Number".
- Для выбранных статей из тех, что размещены на сайте, редактор в поле "Number" вводит номер новой газеты и запрещает редактирование этих статей всем, кроме редактора и администратора. При выполнении этого этапа все материалы, которые планируется включить в бумажную газету уже имеют в поле "Number" установленный номер текущей газеты (это касается как материала типа "заметка", так и материала типа "газета").
- Редактор связывает с вновь созданным материалом типа "газета" выбранные статьи.

Получается, что когда "заметка" привязана к "газете", то автор такой "заметки" теряет право на редактирование и удаление свое "заметки".

Как хотелось сделать:
Если выбрать ВИДЖЕТ "Флажки/переключатели", и при этом установить значение в поле "Аргументы представления" (см. рис. см. рис.) то выглядеть это может так.

На всякий случай, ссылки на картинки из абзаца выше:
- первая ссылка: http://i58.fastpic.ru/big/2015/0415/fa/ac994bb0c50d1a32b430877255ab94fa.jpg.
- вторая ссылка: http://i58.fastpic.ru/big/2015/0415/54/e85be9fb66e33f560961c248fea11f54.jpg.

Получается, что все материалы, имеющие конкретный номер, одновременно выводятся - остается только проставить в чекбоксах галочки.

Так привязывать материалы к газете проще, чем каждый раз вводить номер и добавлять их поштучно (если виджет установлен в "автодополнение").

На этом этапе сверстанной газеты еще нет и у материала типа "газета" поле "Gazeta_pdf" не заполняется. Но в "газете" полям "Title", "Body", "Number" значения уже присвоены, так же как и выбранным "заметкам" в поле "Number" прописано то же самое значение, что и в поле "Number" у вновь создваемой "газеты".

Если в бумажную версию включаются статьи, не указанные на сайте, то такие статьи на сайте размещает редактор (или администратор).

Соответственно, ДО того, как сверстана бумажная версия газеты материалы уже выложены на сайт и "заметки" привязаны к соответствующей "газете".

Верстается бумажная версия, загружается на сайт - заполняется поле "Gazeta_pdf".

Но возник вопрос, что передать конкретное значение я могу (в примере установлено передаваемое значение константой 113) - но вот как сюда запихать значение из поля "Number" не понимаю :(

Можно просто выводить названия заметок с префиксом номера. Например "3 - Заметка о чем-то" тогда достаточно в автокомплит ввести номер заметки и сразу будет видно все заметки этого номера.

Денис, сделал как Вы предложили, но возник вопрос, что у меня каждое поле дополнительно снабжается пробелами - то есть, добавляется пробел и перед полем, и после.
В примере разделителем полей является дефис ("-"). Расчитывал, что строка будет начинаться "2014-1-(113)-....", но в выводе почему-то получается так " 2014 - 1 - (113) - ....": http://fastpic.ru/view/58/2015/0415/2d4f1c004f82a1937daaf9b2f6f5ae9d.jpg.html

Подскажите, пожалуйста, можно убрать эти пробелы и как это сделать?

Денис, поясните, пожалуйста, при добавлении связи чем отличаются:
- Entity Reference: Referenced Entity (Мост к сущности Содержимое, которая связана через field_roles)
- Entity Reference: Связанная сущность (Мост к сущности Содержимое, которая ссылается на Содержимое через field_roles)

В инструкции выше Вы предложили выбирать второй вариант.

Первая связь вытягивает материалы на которые ссылаются через поле типа Entity reference, а вторая материал который ссылается. В уроке мы используем первый вариант. То есть мы вытягиваем актеров на которых ссылается материал фильм. В вашем случае с газетой и заметками тоже нужен первый вариант. Второй вариант нужен в случае если например нужно вытянуть все газеты для заметки в которые она входит. (одна или несколько в зависимости от того может ли одна заметка входить сразу в несколько газет)

P.S. Так и не понял где я предлагал использовать второй вариант.

Интересные уроки.А не подскажите,как сделать чтобы при нажатии на какого либо актера выводились все фильмы с его участием?

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

Поле актеры при этом я не создавал

Извините интересен и второй вопрос - как вывести картинки в результатах поиска в друпал 7?

Для каждого типа материалов вы можете настраивать как они будут выглядеть в разных типах отображения. Например для стандартного типа материалов Article эти настройки можно найти по пути admin/structure/types/manage/article/display. За то как будут выглядеть материалы этого типа в результатах поиска отвечает тип отображения "Результат поиска".

Здраствуйте Денис! Такой вопрос есть магазин в котором товары выводятся через таксономию и вот такую вьюшку тоже из вашего примера.задача такова, что помимо вывода дочерних терминов в каталоге нужно блоком внизу выводить товары отнесенные к родительскому термину.понимаю что нужно использовать связь и контекстный фильтр.Создал блок у которого выводятся витрины товара,поставил связь {Содержимое термин таксономии}, контекстный фильтр темин таксономии имя в качестве типа ID термина таксономии из урла.но почему то не получается не подскажете что я делаю не так?

Надо использовать контекстный фильтр "Термин таксономии: Родительский термин".

Здравствуйте Денис.Недавно задавал Вам вопрос о том как вывести картинки в результатах поиска в друпал 7?Почему то не выводятся они через типы отображения.Использую модули Image и Lightbox2.Сделал пресет того размера который хочу выводить в поиске.Может че не так делаю.Подскажите.Программно пробовал через search-result.tpl тоже не получается.А вообще если можно добавьте в будущем урок о том как сделать поиск на сайте через views,и вывод был с картинками,можно даже на примере фильмов.

Наверное что-то не так делаете, а что именно не знаю.

А программно как вывести картинку в поиске подскажите?Может в скайпе спишемся?

Здравствуйте Денис.Хочу реализовать фото актеров на своем сайте как в вашей статье.Подскажите а поле фото создавать как?Это поле типа изображение?Где хранятся все фото актеров и куда их загружать.Заранее спасибо за ответ.

Да это поле типа изображение. Смотрите курс Изучаем поля в Drupal 7 после него все должно стать ясно.

Понятно,просто у меня уже в базе около 1000 фильмов, теперь нужно в каждом фильме добавлять изображения всех актеров?

Не надо в каждый фильм добавлять изображение актера. Изображение актера вы загружаете в материал типа "Актер" а фильм ссылается на него с помощью поля типа entity_reference.

Как лучше это сделать?

То есть я захожу в каждую ноду и загружаю фотогрфии актеров, которые снимаются в том или ином фильме?Перед этим добавляю поле фото к примеру.Правильно?Подскажите куда именно заливать фото актеров

У меня тип содержимого это фильм, а поле называется актеры

Денис вроде разобрался с картинками.Поле изображение делаю в терминах таксономии.Потом к каждому актеру заливаю его фото.Правильно я делаю?Можно ли как то упростить задачу.Например, не загружать их к себе на сервер, а вставлять ссылку на изображение( на кинопоиск)

Видимо, на меня праздники плохо влияют. Не удается на Drupal 8 сделать точно такую же штуку ;-(

Здравствуйте!
Срочный вопрос - у меня в "связях" нет выбора "Entity Reference: Связанная сущность"

Поставил модули entity и entityreference , но настроек этих модулей не вижу. А в представлениях выбор "связанной сущности" не появилось :(

Вообще, мне надо сделать вот что:
1) есть типа материала с простыми текстовыми полями
2) надо на странице материала вывести блок и одним полем этого же материала.
Вот и думаю создать в представлении блок, указав ему вывод нужного поля. А чтобы в блоке выводилось значение только этого материала, а не всех материалов данного типа, подумал использовать связанную сущность...

Как быть?

Здравствуйте. Честно-говоря с трудом понимаю из вашего описания что вы хотите сделать, но если я понял правильно вы хотите вывести в блок значение одного конкретного поля одного конкретного материала. Для этого можно сделать блочное представление и забить в контекстный фильтр ID (nid) нужного материала, также это можно сделать с помощью модуля Mini panels. Хотя непонятно зачем так утруждаться если это статическое значение то проще создать обычный блок с тем же значением что и это поле.

Добрый день! Реализовала все пошагово, как у вас написано, только исходники другие. Есть ТМ Компания и ТМ Объекты. Надо чтобы на странице конкретной компании выводились блоком только ее объекты. В ТМ Компания есть поле Объекты компании (field_comp_ob), типа Entity Reference ссылающееся на тип материалов Объекты. В отображении это поле скрыто. Есть Views ->Блок, вывод по содержимому ТМ Объекты. Установлена связь Entity Reference: Связанная сущность по полю field_comp_ob + связь обязательна. Добавлен контекстный фильтр - Содержимое nid + значение по умолчанию - Тип ID материала из URL. Все, блок активирован, видимость блока в ТМ Компания. Результат - ничего нет. Не понимаю, что не так. Подскажите, пожалуйста.

Найдена ошибка. связь Entity Reference: Связанная сущность было выбрано Мост к сущности Содержимое, которая связана через field, а надо было Ссылающаяся сущность...

Однако у меня получается так, что user, который разместил в каталог свою компанию, а потом в каталог товаров добавил свои товары, должен сам вручную в редактировании информации о своей компании добавлять в поле Объекты компании (field_comp_ob) свои товары из выпадающего списка. На практике это не реально делать каждый раз, когда пользователь добавил новые товары. Users об этом не знают.

Вопрос, как сделать так, чтобы к карточке компании (конкретная страница компании) цеплялись / выводились только ее товары???

В ТМ Объекты есть поле Компания (field_comp), оно задействовано в карточке товара.

Пожалуйста, очень нужна ваша помощь. Буду очень признательна!

Что то я запутался. Объекты это тоже самое что и Товары? Зачем в Объектах поле Компания если в Компании есть поле Объекты? Распишите каждый тип материалов.

Да, извините за эту путаницу! Пользователь после регистрации может добавить на сайт свою Компанию и свои Объекты (=товары). Сейчас, чтобы на странице компании были видны все ее объекты, пользователь должен вручную при редактировании компании указать их через выпадающий список поля Объекты компании (field_comp_ob)

ТМ Компания:

Название компании title Элемент модуля Node

Категория field_razdel Ссылка на термин Выбор из списка изменить удалить

Вид деятельности field_comp_biz Ссылка на термин Выбор из списка изменить удалить

Предоставляемые услуги field_comp_service Ссылка на термин Выбор из списка изменить удалить

Логотип (фото) field_company_logo Изображение Изображение изменить удалить

Офис компании field_comp_adres Почтовый адрес Динамическая адресная форма изменить удалить

Телефон field_comp_tel Текст Текстовое поле изменить удалить

Мобильный телефон field_comp_tel2 Текст Текстовое поле изменить удалить

Body body Полный текст с анонсом Текстовая область с анонсом изменить удалить

Объекты компании field_comp_ob Entity Reference Выбор из списка изменить удалить

ТМ Объекты:

ЗАГОЛОВОК title Элемент модуля Node

ОПИСАНИЕ ОБЪЕКТА body Полный текст с анонсом Текстовая область с анонсом изменить удалить

Местоположение field_address Почтовый адрес Динамическая адресная форма изменить удалить

ЦЕНА field_price Целое число Текстовое поле изменить удалить

ГЛАВНОЕ ФОТО field_image Изображение Изображение изменить удалить

Телефон field_phone Текст Текстовое поле изменить удалить

Мобильный field_mobile Текст Текстовое поле изменить удалить

Компания field_company Entity Reference Выбор из списка изменить удалить

А как сделать так, чтобы к карточке компании (конкретная страница компании) цеплялись / выводились только ее товары автоматически, без участия пользователя???

Если я правильно понял то пользователь может добавить только одну компанию и соответственно все добавленные им товары будут относиться к ней. Тогда задачу можно решить двумя способами:

  1. Переместить связующее поле из компании в объект и автоматически заполнять его. То-есть не у TM Компания будет поле Объекты компании, а у TM Объекты будет поле Компания. Это правильнее так как при создании Объекта нужно указывать к какой компании он принадлежит, а не сперва создавать объект а потом идти в компанию и там обновлять список объектов.
  2. Убрать поле Объекты компании и привязываться к пользователю создавшему и компанию и объекты. То-есть представление на странице Компании будет получать контекстный фильтр ID компании, по нему вытягивать пользователя создавшего компанию и по пользователю вытягивать все объекты которые создал этот пользователь.

Спасибо большое! Теоретически поняла, остается сделать на практике... с этим у меня пока сложнее ))

Денис, возник такой вопрос по views и таксономии.
Есть два словаря "Професии" и "Тип экзамена" каждый имеет первый уровень вложенности.
Нужно сформировать вьюс который бы предлагал сначала выбрать профессию экзаменуемого, а потом тип экзамена. Сами вопросники оформлены через ноду (модуль quiz), через поля имеют связи с терминами таксономии из этих словарей.
Фишка в том что для разных профессий списки связанных нод в одном типе экамена могут быть разными но сами типы экзаменов одинаковы
Поискал по интернету не могу найти примера объедения двух словарей в одну вьюху.
Спасибо