具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)
Posted
技术标签:
【中文标题】具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)【英文标题】:Drupal 7 views block with default value contextual filter does not filter on page (Mongo) 【发布时间】:2013-08-07 22:36:50 【问题描述】:tl;dr:视图块,带有上下文过滤器,带有默认值。结果在预览中正确显示,但不在页面上。 Page = 具有路径别名的分类术语页面。在 Mongo 上运行。
=====
我的问题与我见过的所有其他上下文过滤器块问题有何不同: - 使用 Mongo - 在上下文过滤器上设置默认值 - 结果在视图预览中正确显示,但不在页面上 在 Mongo 上使用 Drupal 7 和 EFQ 视图,我需要在 TERM 页面上显示所有已用术语 TERM 标记的 NODETYPE 节点。 (在 Mongo 上使用 Drupal,分类索引存储在 mysql 中,但节点内容存储在 Mongo 中,因此术语页面无法按预期工作,并且不返回任何内容。因此需要一个视图来建立此功能。
我的分类是一个拥有自己的字段的实体,& 标记的内容显示在一个块中,位于术语自己的字段下方。 (这就是为什么我不只是创建一个页面视图来显示标记的内容——bc。我必须显示术语自己的字段。)
分类术语页面有一个路径别名“vocab/term-name”。
我已经在预览中成功尝试过的配置,但在页面上却没有:
1:使用路径别名。 全局:Null forarg(0) 节点:arg(1) 的标签 当过滤器不可用时: - 提供默认值:来自 URL 的分类术语 ID - 从术语页加载默认过滤器
或 -- 来自 URL 的原始值,路径组件 2 -- 勾选“使用路径别名”
当过滤器可用时: - 验证器:分类术语、词汇标签 - 筛选值类型:术语名称转换为术语 ID - 将 URL 中的破折号转换为术语名称过滤器值中的空格
2:使用术语 ID 当过滤器不可用时: -- 来自 URL 的原始值,路径组件 3
当过滤器可用时: - 验证器:分类术语、词汇标签 - 过滤值类型:Term ID
无论在 C.Filter 中使用术语名称还是术语 ID,预览中的查看结果都会正确显示。但是不管怎么设置,实际页面上的block都会返回所有的NODETYPE节点。
在分类页面上,该块显示在自定义区域或页面的主要内容区域中。在这两种情况下,所有节点都会显示,未过滤。块上启用了 Ajax,这是一个很好的衡量标准。
我读过/尝试过的不适用/不起作用的主题:(只能发 2 个,但我有 15 个):Drupal 7 views Contextual filters with Page & Blocks @ 987654322@
【问题讨论】:
您是否尝试覆盖/克隆在视图管理页面 (/admin/structure/views) 上禁用的默认视图分类/%term 页面? 【参考方案1】:原来有效的设置是:
Contextual filter: Taxonomy TAGS
Default value: Raw value from URL, Path component 2
Check "Use path alias"
When filter IS present - Specify validation Criteria
Validator: Taxonomy Term (from the checked vocab)
Filter value type: "Term name converted to Term ID"
Check "Transform dashes in URL to spaces in term name filter values"
arg(0) 的全局 Null 妨碍了。没有它,只使用 arg(1) 的值,一切正常。
【讨论】:
以上是关于具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)的主要内容,如果未能解决你的问题,请参考以下文章
如果未定义第二个过滤器,则具有 2 个上下文过滤器的 Drupal 7 视图不起作用