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:如何根据当前页面内容过滤视图内容(带有实体引用字段)的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 7 - 基于页面的分类术语?

如何在视图过滤器中使用标记 - Drupal 7

Drupal 7 视图中的块中暴露的过滤器

Drupal 视图 - 根据 URL 过滤内容

如何在 Drupal 7 视图中使用当前用户作为相关字段?

在drupal中获取当前页面视图