Drupal 内容视图显示通过用户引用字段引用的实体

Posted

技术标签:

【中文标题】Drupal 内容视图显示通过用户引用字段引用的实体【英文标题】:Drupal Content View Show entities referenced via user reference field 【发布时间】:2016-04-25 14:20:32 【问题描述】:

使用 Drupal 7、视图和实体 API 我正在尝试创建一个视图,显示登录用户所有可用的下载。

我使用以下内容类型:

软件 软件包

User 有一个实体引用字段,该字段接受 1 个值来引用 Software Packuser_software_pack

软件包包含一个实体引用字段,该字段接受无限值来引用包中包含的软件field_included_software

对于视图,我正在创建类型为 软件

的内容预告片的无格式列表

这样做会向我显示所有已发布的软件,我现在尝试使用以下关系将列表过滤为仅对用户可用的软件。

通过 field_software_pack 引用内容的用户实体的桥梁 通过 field_software_pack 引用的 Content 实体的桥梁 通过 field_included_software 引用的 Content 实体的桥梁

对我来说,这将转化为获取用户,然后使用它来引用软件包,然后引用该软件包中的软件。 该视图向我显示了所有软件实体。我错过了什么吗?

设置显示:使用关系的内容设置给我一个空视图,根据需要设置一个关系也提供一个空视图。

【问题讨论】:

【参考方案1】:

在休息了很长时间后,我设法解决了这个问题。

对于可能遇到类似问题的任何人: 我过度使用一种关系。

我的视图显示软件类型的所有内容。 软件在多个软件包中被引用(field_included_software)并且用户配置文件有一个引用字段( field_software_pack) 到 1 个软件包

要过滤内容类型 Software 的视图,首先需要建立与引用 SoftwareSoftware Packs 的关系。 p>

通过 field_included_software 引用内容的内容实体的桥梁

然后它需要与 用户配置文件 的另一个关系,以引用用户拥有的 软件包

通过 field_software_pack 引用内容的用户实体的桥梁

要获取登录用户的用户 ID 以将结果限制在用户的Software Pack 中的Software,需要上下文过滤器。 p>

用户:uid

上下文过滤器设置为提供来自 php 代码的默认值:

$uid = $GLOBALS['user']->uid;
return $uid;

上下文过滤器的关系设置为用户参考。

所有关系都必须设置为 REQUIRED。

一旦我像这样配置我的视图,一切都会按计划进行。

【讨论】:

以上是关于Drupal 内容视图显示通过用户引用字段引用的实体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Drupal 7 中创建一个仅显示基于当前用户字段的过滤列表的视图

Drupal 内容类型中节点引用的错误标签

具有节点引用和 cck3 多组字段的 Drupal 视图

当一个 CT 引用另一个 CT 时,如何消除视图中的重复 Drupal 节点?

drupal 7中的上下文过滤器视图

Drupal - 如何在视图中显示特定数量的引用实体