Drupal 视图:列出引用的节点,但用作上下文过滤器的节点除外
Drupal views: list referenced nodes except the one used as contextual filter
我有以下情况:我正在建立一个网站,其中包含有关电影制作人及其电影的信息。我有一个电影制作人的节点类型,包含传记内容等,还有一个用于电影的节点类型,其中一个字段 'author' 引用了一个或多个电影制作人(因为一部电影可能是由他们中的几个人制作的) .
我还有一个名为 'filmography' 的视图块,它列出了用户正在观看的所有作者是电影制作人(节点)的电影。使用上下文过滤器进行设置非常简单。
但现在我想在这个块中连同电影名称一起展示所有可能制作过这部电影的电影制作人('author' 电影节点中的字段)并且与正在观看的电影制作人不同.立即显示作者字段引用的所有电影制作人节点,但我想删除我在上下文过滤器中使用的电影制作人。目标是得到这样的东西:
电影制作人 1
- 电影 1
- 电影 2(与 电影制作人 2)
- 电影 3
我认为这可以使用视图 php 并过滤返回的节点引用来完成,但我想知道是否有更简单的解决方案...
谢谢
更新:我已经设法使用 Views Field View 模块获得结果,将引用节点(电影制作人)的列表作为上下文过滤器(节点 ID)传递,然后添加另一个上下文过滤器(节点 ID)作为排除项,并从 'node id from URL option' 中获取字母的默认值(即,从电影制作人的页面中嵌入了片目视图)。将问题保持一段时间,以获得其他可能更有效的替代方案。
当我阅读您的问题时,Views Field View 模块作为明显的解决方案突然出现在我的脑海中(然后我看到了您的编辑)。我认为这仍然是您最好的选择。绝对避免使用 php 字段,因为从安全的角度来看,这通常不是一个好的做法。如果您担心 efficiency/performance,那么您应该只使用高级选项下的视图缓存设置。好像这个选项总是被看。
如果您正在寻找替代选项,一个可能是使用渲染节点而不是字段作为视图样式,然后使用 Display Suite 生成 "Default" 和 "Teaser," 之外的其他显示模式创建带有过滤器的视图,然后使用实体视图附件 (EVA) 模块插入一个视图作为显示模式字段。虽然这当然是一种可靠的方法,但它增加了渲染实体的大量处理开销,因此您肯定也希望缓存其结果。
p.s。您可能会在 https://drupal.stackexchange.com/
收到 faster/more 回复
我有以下情况:我正在建立一个网站,其中包含有关电影制作人及其电影的信息。我有一个电影制作人的节点类型,包含传记内容等,还有一个用于电影的节点类型,其中一个字段 'author' 引用了一个或多个电影制作人(因为一部电影可能是由他们中的几个人制作的) .
我还有一个名为 'filmography' 的视图块,它列出了用户正在观看的所有作者是电影制作人(节点)的电影。使用上下文过滤器进行设置非常简单。
但现在我想在这个块中连同电影名称一起展示所有可能制作过这部电影的电影制作人('author' 电影节点中的字段)并且与正在观看的电影制作人不同.立即显示作者字段引用的所有电影制作人节点,但我想删除我在上下文过滤器中使用的电影制作人。目标是得到这样的东西:
电影制作人 1
- 电影 1
- 电影 2(与 电影制作人 2)
- 电影 3
我认为这可以使用视图 php 并过滤返回的节点引用来完成,但我想知道是否有更简单的解决方案...
谢谢
更新:我已经设法使用 Views Field View 模块获得结果,将引用节点(电影制作人)的列表作为上下文过滤器(节点 ID)传递,然后添加另一个上下文过滤器(节点 ID)作为排除项,并从 'node id from URL option' 中获取字母的默认值(即,从电影制作人的页面中嵌入了片目视图)。将问题保持一段时间,以获得其他可能更有效的替代方案。
当我阅读您的问题时,Views Field View 模块作为明显的解决方案突然出现在我的脑海中(然后我看到了您的编辑)。我认为这仍然是您最好的选择。绝对避免使用 php 字段,因为从安全的角度来看,这通常不是一个好的做法。如果您担心 efficiency/performance,那么您应该只使用高级选项下的视图缓存设置。好像这个选项总是被看。
如果您正在寻找替代选项,一个可能是使用渲染节点而不是字段作为视图样式,然后使用 Display Suite 生成 "Default" 和 "Teaser," 之外的其他显示模式创建带有过滤器的视图,然后使用实体视图附件 (EVA) 模块插入一个视图作为显示模式字段。虽然这当然是一种可靠的方法,但它增加了渲染实体的大量处理开销,因此您肯定也希望缓存其结果。
p.s。您可能会在 https://drupal.stackexchange.com/
收到 faster/more 回复