Drupal 7 — Entity Reference — отображать только элементы, относящиеся к узлу, который связан с другим узлом

У меня есть 3 типа контента: ресторан, меню и пункт меню.

Я настроил свой тип контента «Ресторан», чтобы при создании «Ресторана» у меня была возможность создать меню с элементами меню, используя модули «Ссылка на сущность» и «Встроенная форма сущности». Это все работает хорошо.

Часть, которую я не могу приступить к работе, - это правильно отображать пункты меню на странице «Ресторан». Я создал блок «Просмотр меню», в который добавил поля «Элемент меню» и отфильтровал его по типу контента «Элементы меню».

Когда я помещаю этот блок на страницу своего ресторана, я вижу, что отображаются все пункты меню...

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

Редактировать: в моем типе контента «Ресторан» я создал field_menu, который является ссылкой на объект для типа контента «Меню», и я использую модуль Inline Entity Form, чтобы разрешить создание объектов «Меню» на странице создания «Ресторан».

Точно так же в моем типе контента «Меню» у меня есть field_menu_item, который является ссылкой на объект для типа контента «Элемент меню».


person barrakuda    schedule 20.10.2014    source источник
comment
Как вы настроили сущности? У вас есть поле «Меню» в типе контента ресторана, которое является ссылкой объекта на тип контента меню, и элемент меню поля в типе контента меню, который является ссылкой объекта на тип контента пункта меню?   -  person geoandri    schedule 20.10.2014
comment
Я отредактировал свой вопрос и добавил больше деталей. Спасибо!   -  person barrakuda    schedule 20.10.2014
comment
это довольно сложно из-за ссылки на сущность через ссылку на сущность. Я сделал попытку, но не получилось. Я попробую еще раз и вернусь, я надеюсь.   -  person geoandri    schedule 20.10.2014


Ответы (1)


В этом случае вам следует добавить связь между пунктами меню и ресторанами, чтобы получить доступ к полю меню в представлении пунктов меню. Вы можете сделать это в расширенных отношениях области и добавить нужные ссылки на объекты. В вашем случае вы должны добавить поле ссылки на меню и поле ссылки на ресторан. Они должны быть похожи на

  Entity Reference: Referencing entity 
 A bridge to the Content entity that is referencing Content via menu_item_field

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

Затем в вашем контекстном фильтре в области «Когда значение фильтра НЕ находится в URL-адресе» выберите «Предоставить значение по умолчанию» и введите «PHP-код» (для этого вам нужно включить php-фильтр). В области кода php у вас должен быть следующий код

$node=menu_get_object();
return $node->field_your_machine_field_name['und'][0]['target_id']; // this is the field you will use for filttering.It should be the menu field in the restaurant content type 

Надеюсь, я вас не спутал. Хотя это не простая задача.

person geoandri    schedule 20.10.2014
comment
Я не вижу опции для restaurant_field во всплывающем окне добавления отношений. Я вижу только опции для field_menu и field_menu_item. - person barrakuda; 21.10.2014
comment
после того, как вы добавите первое отношение, второе должно быть доступно - person geoandri; 21.10.2014
comment
У меня нет поля restaurant_field в моем типе контента меню, поэтому при создании представления я не вижу возможности выбрать Ссылка на сущность: Ссылочная сущность... через restaurant_field Способ, которым я связываю типы контента, выглядит следующим образом : Ресторан › Меню › Пункт меню. Таким образом, в типе контента «Ресторан» я ссылаюсь на «Меню», а в «Меню» — на «Элементы меню». Вот как это должно быть настроено, но я не уверен, что должен делать что-то еще. - person barrakuda; 21.10.2014
comment
Кроме того, представление фильтруется по типу содержимого элемента меню, поскольку я использую фильтры для фильтрации элементов меню по типу еды. - person barrakuda; 21.10.2014
comment
Заранее спасибо за помощь, я схожу с ума по этому поводу... Я уже много часов пытаюсь найти решение... :( - person barrakuda; 21.10.2014
comment
Будьте осторожны с незначительной разницей между ссылочной сущностью и ссылочной сущностью в отношениях. - person geoandri; 21.10.2014