我可以使用一个暴露的过滤器来过滤不同页面上的多个块视图吗?

Posted

技术标签:

【中文标题】我可以使用一个暴露的过滤器来过滤不同页面上的多个块视图吗?【英文标题】:Can I use one single exposed filter to filter multiple block views on a different page? 【发布时间】:2009-03-30 15:34:26 【问题描述】:

我在一个页面(称为“信息”页面)上有四个块视图,它们按邻近度过滤,为我提供与一个特定过滤位置相关的四条信息。

我希望能够创建一个带有暴露邻近过滤器的介绍页面,执行该过滤器时会带我到(信息)页面,并同时过滤四个视图,其中输入在介绍页面上的接近度。

我该怎么做?我是 php 新手,但正在学习....愿意努力工作!

谢谢

【问题讨论】:

【参考方案1】:

如果您在 Drupal 6 中使用视图,答案是肯定的——但有一些重要的注意事项。

与 Drupal 中的普通表单不同,视图的公开过滤器值以 $_GET 参数而不是 $_POST 的形式出现。这意味着您可以通过将 ?filter=value&filter2=value2 等附加到当前 URL 来填充公开的过滤器。

关键在于,如果同一页面上的多个视图在 URL 中查找相同的过滤器键,它们都将使用传入的过滤器值。您需要配置每个视图的公开过滤器列表,以确保它们都使用相同的过滤器列表,并为传入值使用相同的“键”列表。如果您希望过滤器表单只出现一次,您可能还需要进行一些巧妙的处理——默认情况下,视图会希望它出现在每个视图上,但是每个视图都有一个选项可以将其暴露的过滤器移动到一个块中;这样做并且不启用暴露的过滤器块会有效地隐藏视图的暴露过滤器小部件,同时在通过 URL 进入时保持过滤处于活动状态。

总结一下:确保所有四个视图都有相同的公开过滤器列表,并且对过滤器使用相同的“键”。隐藏除一个视图之外的所有视图上暴露的过滤器小部件。到那时,它应该可以工作了。

【讨论】:

伊顿,感谢您的快速回复。我相信我理解但不确定如何实施。在继续之前......这可以通过 Drupal 5.x 中的视图来完成吗?由于 6.x 中的某些模块不可用,我目前有点锁定到 5.x。杰夫(jdm843) 暴露的过滤器在 D5 中仍然可以工作,但你必须更加小心:它们使用像 'filter1' 和 'filter2' 这样的键——这意味着你需要保留所有的过滤器同步不同的视图,以便 URL 键匹配。如果你这样做,它应该仍然有效!

以上是关于我可以使用一个暴露的过滤器来过滤不同页面上的多个块视图吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将视图块重定向到显示页面

SEO 友好的暴露过滤器视图 Drupal 7

在 Laravel 的页面上应用过滤器后获取表格上的数据

将 Drupal 中所有暴露的过滤器相互解耦,并将每个暴露的过滤器作为一个单独的块

一个公开的过滤器中的多个过滤器标准

Drupal 7 视图中的块中暴露的过滤器