Drupal 7:如何根据当前页面内容过滤视图内容(带有实体引用字段)
Posted
技术标签:
【中文标题】Drupal 7:如何根据当前页面内容过滤视图内容(带有实体引用字段)【英文标题】:Drupal 7: how to filter view content (with entity reference field) based on current page content 【发布时间】:2014-10-17 09:30:46 【问题描述】:在我的 drupal 7 中,我有 2 种如下内容类型:
内容A ContentB(字段实体引用 ContentA)在 ContentA 的前端详细信息页面中,我希望显示一个带有 ContentB 列表的块/视图,其 Entity Reference 字段设置为当前 ContentA。
我创建了一个 Block 类型的视图并将其正确添加到页面中,但我无法根据当前 ContentA 过滤 ContentB。
你能帮帮我吗?
谢谢
【问题讨论】:
【参考方案1】:您应该为将用于过滤的值添加一个上下文过滤器到 ContentB 的块视图。 然后在“当过滤器值不在 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 fitlering
希望对你有帮助
更新
如果您需要在块中显示具有相同选择的相似结果(例如 ContentB 的相似结果在 ContentA 的引用字段中具有相同选择),上述代码将起作用。我不会删除,因为您可能需要它也在你的项目中。我误解了。实际上解决方案更简单。您应该将上下文过滤器添加到该字段并在“当过滤器值不在 URL 中时”区域中选择“提供默认值”和“从 url 提供 id”
【讨论】:
以上是关于Drupal 7:如何根据当前页面内容过滤视图内容(带有实体引用字段)的主要内容,如果未能解决你的问题,请参考以下文章