0

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

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

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

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

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

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

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

4

1 回答 1

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 

希望我没有混淆你。虽然这不是一个简单的任务。

于 2014-10-20T19:51:43.193 回答