Drupal 视图:列出引用的节点,但用作上下文过滤器的节点除外

Posted

技术标签:

【中文标题】Drupal 视图:列出引用的节点,但用作上下文过滤器的节点除外【英文标题】:Drupal views: list referenced nodes except the one used as contextual filter 【发布时间】:2015-04-29 20:19:59 【问题描述】:

我有以下案例:我正在建立一个网站,其中包含有关电影制作人及其电影的信息。我有一个用于电影制作人的节点类型,包含传记内容等,另一种用于电影,带有一个引用一个或多个电影制作人的字段“作者”(因为一部电影可能是由他们中的几个人制作的)。

我还有一个名为“filmography”的视图块,其中列出了作者是用户正在观看的电影制作人(节点)的所有电影。使用上下文过滤器进行设置非常简单。

但是现在我想在这个区块中连同电影名称一起展示所有可能制作这部电影的电影制作人(电影节点中的“作者”字段)并且与正在观看的电影制作人不同。立即显示作者字段引用的所有电影制作人节点,但我想删除我在上下文过滤器中使用的电影制作人。目标是得到这样的东西:

电影制作人 1

电影 1 电影 2(与 Filmmaker 2电影 3

我认为这可以使用视图 php 并过滤返回的节点引用来完成,但我想知道是否有更简单的解决方案...

谢谢

更新:我已设法使用 Views Field View 模块获得结果,将引用节点(电影制作人)列表作为上下文过滤器(节点 ID)传递,然后添加另一个上下文过滤器(节点 ID)作为排除,并从“来自 URL 选项的节点 ID”中获取字母的默认值(即,从电影制片人的页面中嵌入电影视图)。将问题保持一段时间,以获得其他可能更有效的替代方案。

【问题讨论】:

【参考方案1】:

当我阅读您的问题时,Views Field View 模块作为明显的解决方案突然出现在我的脑海中(然后我看到了您的编辑)。我认为这仍然是你最好的选择。绝对避免使用 php 字段,因为从安全角度来看,这通常不是一个好习惯。如果您担心效率/性能,那么您应该只使用高级选项下的视图缓存设置。似乎这个选项总是被查看。

如果您正在寻找替代选项,一种可能是使用渲染节点而不是字段作为视图样式,然后使用 Display Suite 生成“默认”和“预告片”之外的其他显示模式,使用过滤器创建视图,然后使用实体视图附件 (EVA) 模块将视图插入为显示模式字段。虽然这肯定是一种健壮的方法,但它增加了渲染实体的大量处理开销,因此您肯定也希望缓存其结果。

附言您可能会在https://drupal.stackexchange.com/

上获得更快/更多的回复

【讨论】:

以上是关于Drupal 视图:列出引用的节点,但用作上下文过滤器的节点除外的主要内容,如果未能解决你的问题,请参考以下文章

使用 Drupal 视图

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

在视图中按有机组列出 Drupal 节点

Drupal 7 视图上下文链接编辑节点和字段

Drupal 7 视图 - 如何将上下文过滤器与常规过滤器(使用 OR)结合起来?

Drupal 6:视图:列出带有标记节点的分类术语