drupal 视图动态过滤器

Posted

技术标签:

【中文标题】drupal 视图动态过滤器【英文标题】:drupal views dynamic filter 【发布时间】:2014-08-16 22:52:20 【问题描述】:

我有一个 Drupal 网站,用于发布比赛结果。 我创建了一个内容类型,我在其中为锦标赛中的 1 人编写结果。所以这些字段就像:比赛日期、球员姓名、最终位置。 如果有 10 人参加比赛,我会为每个玩家创建此内容。

现在,我想创建一个包含视图的表格,列出锦标赛中的所有玩家以及各种信息,例如玩家姓名/最终位置。通过在视图中添加字段和排序标准,我可以很容易地做到这一点。但我的问题是,下次我们有比赛时我应该怎么做。我想只使用相同的视图设置,但不必克隆以​​前的视图,只需更改日期过滤条件。 因此,我需要用户能够查看锦标赛页面,然后查看该特定锦标赛的结果。然后,如果用户去查看另一个锦标赛的不同页面,那么只会显示那些结果。 而且我希望以一种干净的方式来做,我不必克隆视图而只需更改日期。

【问题讨论】:

【参考方案1】:

您可以通过使用上下文过滤器制作视图来实现此目的。上下文过滤器将处理 分类法节点引用,因此您只能使用 1 个动态视图。但为了完成这项工作,您可能需要稍微调整一下内容类型,以便您的视图更容易过滤它们:

您当前的内容类型包含参赛者/选手的所有信息(比赛日期、选手姓名、最终位置),因此最好将该内容类型命名为参赛者。 然后创建一个新的分类或内容类型:Tournament,它将处理锦标赛的信息。将它们分开是更好的方法。

假设您有一个分类法:锦标赛分类法,其中包含您设置的所有锦标赛。然后,您可以将其添加为内容类型中的术语参考字段:参赛者。 (添加一个新的术语参考字段:“锦标赛”和小部件:选择列表。)


创建您的视图

过滤条件 -> Content:Type (=Contestant)

页面设置 -> 路径:/tournaments/%

上下文过滤器 -> 内容:具有分类术语 ID

覆盖标题 -> %1


对于您拥有的每个分类术语(锦标赛),此视图现在都有一个页面。因此,例如,当您转到 http://yourdrupal/tournaments/1 时,它只会过滤您对该锦标赛的视图。

我附上了一张图片,这样你就可以看到我是如何配置我的视图的

【讨论】:

非常感谢您写得很好的答案。它完全符合我的要求,也让我更接近于完全理解上下文过滤器的工作原理。我仍然觉得它有点棘手,但你的帖子确实解释得很好!

以上是关于drupal 视图动态过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 视图过滤器中的 SQL 函数

Drupal、视图、公开过滤器:自定义默认选定标签

DRUPAL,视图,公开搜索过滤器:如何从不过滤特定节点?

Drupal 7 视图暴露的过滤器

Drupal 视图和暴露的过滤器下拉菜单

Drupal 7 视图暴露的过滤器不起作用