Hugo添加非文章类联系/关于页面,避免在文章列表中显示
解决Hugo页面分类与分页的问题
问题根源
.Site.RegularPages会包含所有内容文件(posts和pages目录下的markdown页面),所以首页分页会把about、contact这类页面也列出来。- 直接用
.Paginate (where .Site.Pages "Type" "posts") 6会把/posts/这个自动生成的列表页也包含进去——因为它的Type也是posts,但这个页面没有文章内容,导致/posts/页面出现空白条目。
正确解决方案
1. 首页与/posts/页面统一用RegularPages过滤
不管是首页还是/posts/列表页,都使用以下代码来分页:
{{ $post_paginator := .Paginate (where .Site.RegularPages "Type" "posts") 6 }}
.Site.RegularPages只包含内容文件(即每个markdown生成的单页),不会包含自动生成的列表页(比如/posts/),能精准获取posts目录下的所有文章。- 同时通过
"Type" "posts"过滤,完全排除pages目录下的about、contact页面。
2. 确认pages页面的Type设置
确保pages目录下的about.md和contact.md的front matter里Type正确(Hugo会自动根据目录名设置Type为pages,也可以手动指定):
--- title: "关于我们" type: pages ---
这样在过滤Type为posts的内容时,这些页面会被自动排除。
额外验证
如果还有问题,可以在模板里输出调试信息确认:
{{ range where .Site.RegularPages "Type" "posts" }} <p>{{ .Title }} - {{ .Type }}</p> {{ end }}
查看是否只显示posts目录下的文章标题和Type为posts的内容。
内容的提问来源于stack exchange,提问作者InsaneCoder
相关产品推荐
相关产品推荐

