Hugo首页展示指定分类文章的实现方法咨询
在Hugo首页展示指定分类文章的解决方案
问题分析
你使用的intersect方法用于比较两个数组的交集,但如果文章的categories是字符串类型(比如categories: Motherboards),或是数组匹配逻辑有误,就会导致代码失效。以下是几种可靠的实现方案:
方案1:适配数组类型分类参数
如果文章Front Matter里的分类是数组形式(例如categories: ["Motherboards", "Hardware"]),可以用in操作符匹配:
{{ range where .Site.RegularPages "Params.categories" "in" (slice "Motherboards") }} <!-- 这里编写文章列表渲染代码,示例: --> <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2> <p>{{ .Summary }}</p> {{ end }}
方案2:兼容字符串/数组混合的分类参数
若部分文章分类是字符串(categories: Motherboards)、部分是数组,可通过自定义判断逻辑兼容两种格式:
{{ range .Site.RegularPages }} {{ if or (eq .Params.categories "Motherboards") (in .Params.categories "Motherboards") }} <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2> <p>{{ .Summary }}</p> {{ end }} {{ end }}
方案3:直接调用分类页面的文章集合
Hugo会自动为每个分类生成专属页面,直接调用对应分类的文章集合效率更高:
{{ with .Site.Taxonomies.categories.motherboards }} {{ range .Pages }} <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2> <p>{{ .Summary }}</p> {{ end }} {{ end }}
注意:这里的motherboards是分类名的小写形式,Hugo会自动将分类名转为小写,不受文章里的大小写写法影响。
常见排查要点
- 核对文章Front Matter的分类字段:确认是
categories(复数)还是category(单数),不少主题会采用单数形式。 - 分类名大小写:Hugo分类默认大小写不敏感,但通过
Taxonomies调用时需使用小写。 - 确认文章是否在集合内:若文章是草稿状态(
draft: true)或未发布,不会出现在RegularPages中,可改用.Site.Pages或在配置文件中设置buildDrafts: true。
内容的提问来源于stack exchange,提问作者Nedjma Média
相关产品推荐
相关产品推荐

