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

Posted

技术标签:

【中文标题】Drupal 7 视图 - 如何将上下文过滤器与常规过滤器(使用 OR)结合起来?【英文标题】:Drupal 7 views - how to combine a contextual filter with a regular filter (with OR)? 【发布时间】:2017-03-21 16:39:29 【问题描述】:

好的,所以我有一个“播放列表”内容类型,其中包含一个节点引用字段和一个名为“始终显示此播放列表”的布尔字段。

我有一个“播放列表”视图,其中包含基于节点引用的上下文过滤器。因此,当我转到“/playlists/35”时,它会显示所有引用节点 35 的播放列表。

到目前为止一切顺利。

一个额外的要求是视图还需要显示所有将“always_display_playlist”字段设置为 1(即布尔字段)的播放列表。

所以基本上视图需要显示匹配上下文过滤器或布尔字段设置为 1 的播放列表。

到目前为止,我在完成这项工作方面相当悲惨地失败了。上下文过滤器效果很好,但当然它只会显示节点引用与参数匹配的播放列表。如何将上下文过滤器与另一个常规过滤器组合,但使用“或”?

非常感谢任何线索或想法!

【问题讨论】:

我没试过——我已经用views_evi解决了这个问题(见第一个答案下的评论) 好的,这也可以解决问题。希望没关系,我将其包含在我自己的答案中(与您相关的学分)... 当然没问题。感谢您的积分! 【参考方案1】:

选项 1

考虑Views Contextual Filters OR 模块,它今天只有一个开发版本。摘自其项目页面:

... 提供了一个视图插件,可以修改查询以支持上下文过滤器的 OR 条件。

选项 2

否则Views EVI (Exposed Value Injector) 模块,它今天只有一个测试版。摘自其项目页面:

此模块解决了视图参数过滤器(=上下文过滤器)的基本和长期问题(#357082: Pull filter value from an argument? 和Itangalos Sandbox):它们远不如常规过滤器有效。

它通过允许将参数标记连接到暴露的过滤器并选择性地隐藏它们来实现这一点。它还允许新的用例,想想:为两个过滤器使用一个暴露的小部件。

学分(选项 2):Hubert

【讨论】:

【参考方案2】:

如果您单击过滤器旁边的下拉菜单,您可能会使用两个不同的过滤器组,一个对应于上下文过滤器并使用 views filter harmonizer 管理它,另一个组使用布尔过滤器并在它们之间使用 OR。

【讨论】:

非常感谢!这让我走上了正轨。我没有设法使用视图过滤器协调器,但我用 views_evi 模块完成了它

以上是关于Drupal 7 视图 - 如何将上下文过滤器与常规过滤器(使用 OR)结合起来?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Drupal 7 中的 URL 中获取视图(上下文过滤器)中的结果

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

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

Drupal 7 视图显示具有相同分类术语的节点

Drupal 7 和视图,通过多个/组合字段搜索的上下文过滤器。是不是可以?

具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)