Drupal 7 - 实体引用 - 仅显示与另一个节点相关的节点相关的项目

时间:2014-10-20 18:55:07

标签: drupal-7 drupal-views entityreference

我有3种内容类型:餐厅,菜单和菜单项。

我已经设置了我的餐厅内容类型,以便在“餐厅”时提供一个'已创建我可以使用实体参考和内联实体表单模块创建带菜单项的菜单。这一切都运作良好。

我无法开始工作的部分是在'餐厅'中正确显示菜单项。页。 我创建了一个菜单视图块,我在其中添加了菜单项字段,并按内容类型'菜单项'过滤它。

当我将此块放入我的餐厅页面时,我看到所有菜单项都显示出来......

如何仅显示与正在查看的餐馆相关的菜单内容类型相关的菜单项?

编辑: 在我的餐厅'内容类型我创建了一个field_menu,它是一个对菜单内容类型的实体引用,我使用内联实体表单模块来创建'菜单' '餐厅内的实体'创建页面。

同样,在我的菜单中'内容类型我有一个field_menu_item,它是和菜单项内容类型的实体引用。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该添加菜单项和餐馆之间的关系,以便访问菜单项视图中的字段菜单。您可以在“高级”区域关系中执行此操作,并添加所需的实体引用。在您的情况下,您应添加菜单引用字段和餐厅引用字段。它们应该与

类似
  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 

希望我没有把你弄糊涂。但这不是一项简单的任务。