You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 04:55:55