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 Pack。 user_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 的视图,首先需要建立与引用 Software 的 Software 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 中创建一个仅显示基于当前用户字段的过滤列表的视图