将 Drupal 视图过滤器公开为开/关复选框以启用/禁用过滤器
Posted
技术标签:
【中文标题】将 Drupal 视图过滤器公开为开/关复选框以启用/禁用过滤器【英文标题】:Expose a Drupal Views filter as an on/off checkbox to enable/disable the filter 【发布时间】:2013-02-06 15:55:00 【问题描述】:我有一个过滤分类字段的 Drupal 视图。我希望能够通过在 Exposed Filters 表单上显示一个复选框来打开/关闭过滤器。 为了说明这个问题,比如说词汇是水果,术语是苹果、梨、橙子和柠檬。我可以通过创建一个过滤器来选择柑橘类水果的含量,该过滤器说水果是(橙子、柠檬)之一。现在我想公开过滤器以允许我选择是否应用我的柑橘类水果过滤器。如何在公开的过滤器表单中添加一个复选框,以便在选择时应用过滤器,并在未选择时忽略过滤器?
【问题讨论】:
【参考方案1】:这是可能的:
在适当的字段上添加一个过滤器(术语参考水果在 你的例子)。在“配置过滤条件”对话框中:
将“要公开的过滤器类型”设置为“分组过滤器”。 勾选“允许多选” 将“小部件类型”设置为 Radios。 您可能想清空“标签”。 除去下表中的一个过滤器集以外的所有过滤器集。在剩下的过滤器集中:
填写标签(在您的示例中为“柑橘类水果”)。 将“运算符”设置为“是其中之一”。 在值下选择您要过滤的值(在您的示例中为橙子和柠檬)。这会为您提供 1 个标记为“柑橘类水果”的复选框。所以用户界面就在那里。不幸的是,问题[#2224601] 阻止了它的工作,因为它会导致无效的查询,但有一个工作补丁可用。
【讨论】:
在布尔字段上执行此操作时,这将崩溃并出现“无法在 drupal_array_set_nested_value() 中创建对字符串偏移量或重载对象的引用” - 解决方案在 drupal.stackexchange.com/a/129135/101329【参考方案2】:假设您使用BEF 并且您已在 BEF 选项中为暴露的过滤器选中“复选框/单选按钮”选项,设置复选框而不是单选按钮的方法是选中“允许多项选择” " 在视图中暴露的过滤器的配置对话框中。
【讨论】:
我认为你应该详细说明,如果你想避免这个答案被标记为“这不是一个答案”并最终被关闭。 答案确实很简短,但解决方案本身非常简单。我尽力扩大答案。谢谢你的建议。【参考方案3】:我认为这里没有答案可以回答这个问题。 “我想要的是显示一个复选框,选中时应用/启用过滤器,未选中时忽略/禁用过滤器。我认为 Better Exposed 过滤器不允许我这样做。”
您不需要“更好的曝光过滤器”来执行此操作。 您需要使用分组过滤器。
点击向访问者公开此过滤器 要公开的过滤器类型:分组过滤器 勾选“可选” 检查“小部件类型:收音机” 选中“允许多选” 如果需要,删除/清空“标签” 在底部有几行,您可以根据需要设置每一行。如果您只想要一个,请删除除一个以外的所有内容 点击应用这个答案很晚。但我希望这对某人有所帮助。
【讨论】:
我完全按照这些说明进行操作,但它仍然显示一个单选框,而不是复选框。你在 D7 中测试过这个吗?【参考方案4】:您会假设 Views 会开箱即用地执行此操作。它没有。使用 Better Exposed Filters 模块 -> http://drupal.org/project/better_exposed_filters
它甚至还有嵌套的复选框/单选按钮,用于分层分类。
这里有一些特定于您正在尝试做的文档...
“复选框/单选按钮:此选项适用于任何选项数量有限的过滤器。勾选强制单个选项以使用单选按钮,取消勾选复选框。
嵌套复选框/单选按钮:虽然此选项显示常规复选框选项显示的任何过滤器,但它实际上仅用于具有层次结构的分类过滤器。如果您使用的分类过滤器将选择类型设置为下拉并勾选在下拉列表中显示层次结构,则这些过滤器将呈现为嵌套的无序列表。勾选 Force single 选项以使用嵌套单选按钮"
【讨论】:
你能解释一下如何使用更好的暴露过滤器来做我想做的事吗?我已经公开了我的过滤器,选择了我想要的术语,并将限制列表设置为选定的项目。然后,在 BEF 设置中,我选择了复选框/单选按钮。我没有看到强制单一选项。现在在我暴露的过滤器表单中,我将我选择的术语单选按钮视为单选按钮。但这不是我要找的。我想要的是显示一个复选框,选中时应用/启用过滤器,未选中时忽略/禁用过滤器。我认为 Better Exposed 滤镜无法让我这样做。以上是关于将 Drupal 视图过滤器公开为开/关复选框以启用/禁用过滤器的主要内容,如果未能解决你的问题,请参考以下文章