Drupal8如何使用term name而非term id创建taxonomy视图页面
Drupal 8 Views 基于分类术语URL别名自定义列表页路径配置方法
你当前已搭建可正常运行的分类关联节点列表Views页,原路径为taxonomy/term/%,采用分类ID作为上下文筛选规则,要实现resource/[术语URL别名](如resource/industry对应原taxonomy/term/152)的访问效果,按以下步骤配置即可,无需改动原有筛选逻辑:
- 第一步:修改Views页面基础路径
进入目标Views的编辑界面,在页面设置区域找到路径配置项,将原有路径taxonomy/term/%修改为resource/%,先保存路径配置。 - 第二步:调整上下文筛选校验规则(核心配置)
找到你已经添加的「分类术语ID」上下文筛选器,点击进入配置页:- 下拉找到校验规则区域,勾选「指定校验规则」
- 校验器下拉选择「分类术语(Taxonomy term)」
- 勾选你要匹配的对应词汇表,避免跨词汇表出现匹配错误
- 找到参数类型下拉选项,选择「分类术语URL别名(Taxonomy term URL alias)」——这个配置会让Views自动把URL中传入的别名映射为对应术语的数字ID,直接复用你原有的ID筛选逻辑,不需要重写筛选规则
- 校验失败的响应动作按需选择即可,一般选显示404页面
配置完成后保存上下文筛选设置。
- 第三步:批量配置术语URL别名(可选,适合大量术语场景)
如果你还未给术语设置对应格式的别名,进入后台URL别名模式配置页(路径/admin/config/search/path/patterns),给目标词汇表添加别名规则,模式填写resource/[term:name],开启批量更新即可自动生成所有术语的对应访问别名,无需手动逐个配置。 - 第四步:路由冲突处理(访问跳转到系统默认术语页时再配置)
如果配置完成后访问resource/xxx跳转到了系统自带的分类术语详情页,有两种处理方式:- 在Views页面设置中勾选「覆盖默认分类术语页面」,直接用当前Views替换系统默认的术语页路由
- 安装
Disable term pages模块直接关闭系统自带的术语前台路由,避免优先级冲突
- 最后一步:清除Drupal全站缓存,访问对应别名路径即可正常展示关联节点列表。
注意:不要直接把上下文筛选规则改成按术语名称匹配,术语名称可能存在重名、特殊字符转义问题,用「别名校验+原有ID筛选」的方案兼容性、匹配准确率和性能都更优。
配置参考截图:
内容的提问来源于stack exchange,提问作者MiltonMethod
相关产品推荐
相关产品推荐

