1275 总字数
5分钟 预计时间
发布 2026-11-07

配置指南#

本页说明主题的配置该怎么写:哪些由主题内置、哪些必须写在你的站点里、每个参数的作用,以及容易踩的坑。按顺序抄一遍就能跑起来。

配置分三层#

文件作用要不要动
主题根 hugo.toml主题内置默认值,Hugo 会自动合并进你的站点不用动,需要时在站点里覆盖
站点 hugo.toml你自己的站点配置必须写
exampleSite/hugo.toml示例站配置,含仓库自测用的挂载只作参考
警告

不要把 exampleSite/hugo.toml 整份复制到自己的站点。它的 [module] 段挂载的是 ../layouts、../assets 这些上层目录,只有「仓库根就是主题」的结构才成立。主题安装到 themes/helloblog 后这些路径不存在,构建会直接失败。

最小可用配置#

初始化站点只需要下面这些:

baseURL = 'https://your-domain.com/'
title = 'My Blog'
timeZone = 'Asia/Shanghai'
theme = 'helloblog'

# 生成 robots.txt,并指向 sitemap
enableRobotsTXT = true

# 标签只在 /tags/ 原地筛选,不生成 /tags/<term>/ 详情页
disableKinds = ['term']

# 首页额外输出 index.json,搜索功能依赖它
[outputs]
  home = ['html', 'rss', 'json']

# 列表页每页条数
[pagination]
  pagerSize = 6

# 只保留标签 taxonomy
[taxonomies]
  tag = 'tags'
警告

outputs.home 必须包含 json。少了它,搜索会静默失效,页面不报错但没有任何结果。

只能写在站点里的配置#

Hugo 只会把主题配置里的 params、taxonomies、markup 这类表合并进站点,下面这些是站点级配置,写在主题的 hugo.toml 里不生效:

配置用途
outputs首页 JSON 索引(搜索)
pagination列表分页条数
services.rssRSS 条目上限
imaging图片处理画质与重采样
sitemap抓取提示
module主题安装方式

主题参数#

[params] 已经有通用默认值,只写你想改的项即可。

参数默认说明
description空SEO 兜底描述,页面 front matter 优先
keywords空SEO 兜底关键词
imagesog-cover.png社交分享默认封面,放 static/
color_themesakurasakura / purple / ink / cyan / blue
glass_opacity0.5玻璃拟态透明度,0~1
siteage空建站日期,留空则页脚不显示运行天数
avataravator.webp侧栏头像,相对 static/
saying空侧栏一句话,留空用 i18n 文案

首页#

[params.index]
  logo = ''                     # 首页大标题,留空用 site.Title
  welcome = ['Hello, world']    # 打字机文案,可多句循环
  increase_speed = 60           # 打字间隔(毫秒)
  decrease_speed = 40           # 删除间隔(毫秒)
  loop_speed = 1000             # 句子切换前停顿(毫秒)
  particle_enable = true        # 粒子背景
  particle_distance = 180       # 粒子连线距离阈值

背景#

[params.background]
  enable = true
  image = 'background.webp'     # 相对 static/
  overlay_dark = 0.6            # 暗色遮罩浓度
  overlay_light = 0.5           # 亮色遮罩浓度

评论#

评论默认关闭。启用前需要先在 giscus 应用里拿到仓库信息,否则评论会挂到别人的仓库。

[params.giscus]
  enable = true
  repo = 'owner/repo'
  repo_id = 'R_xxx'
  category = 'General'
  category_id = 'DIC_xxx'
  mapping = 'pathname'
  strict = '0'
  reactions_enabled = '1'
  emit_metadata = '0'
  input_position = 'bottom'

多语言#

主题按文件名配对译文:content/about/index.md 对应 content/about/index.en.md。

defaultContentLanguage = 'zh'
defaultContentLanguageInSubdir = false   # 默认语言挂在根路径

[languages]
  [languages.zh]
    languageName = '中文'
    languageCode = 'zh-cn'
    weight = 1
  [languages.en]
    languageName = 'English'
    languageCode = 'en'
    weight = 2

数据文件同样支持多语言:默认读 data/link.json,英文站会自动改用 data/link-en.json(music 同理)。

导航菜单#

导航由 Hugo 菜单驱动,加链接不需要改模板:

[[menus.main]]
  identifier = 'nav.posts'   # 对应 i18n 的 nav.posts
  name = '文章'              # identifier 缺失时的回退文案
  url = 'posts/'             # 相对地址,自动补语言前缀
  weight = 1

identifier 命中 i18n/*.toml 里的 nav.* 时优先用译文;url 写相对路径,英文站会变成 /en/posts/。

内容与字段#

文章使用 page bundle:content/posts/<slug>/index.md。

---
title: 文章标题
date: '2026-10-23'
lastmod: '2026-11-07'
category: 技术
tags: [hugo, markdown]
description: 文章摘要
keywords: [hugo, markdown]
draft: false
---
字段用途
title标题,用于页面标题与搜索索引
date发布时间,列表与归档按它倒序
lastmod更新时间,与 date 不同时文章页才显示更新块
category归档页分组
tags标签云与筛选
descriptionmeta description,缺省回退站点描述
keywordsmeta keywords,建议数组
draftHugo 内置,true 时不参与构建
history可选,更新记录数组,同时用于首页热力图

数据文件#

友链与播放器的数据在站点 data/ 下,不放在主题里:

  • data/link.json:友链列表
  • data/music.json:歌单

多语言站点在默认文件旁放 link-en.json、music-en.json 即可,无需改配置。

常见问题#

Q搜索没有结果
A检查 outputs.home 是否包含 json,并确认 /index.json 可以访问
Q评论不显示
A检查 params.giscus.enable 是否为 true,repo_id 与 category_id 是否填写
Q语言切换后 404
A译文需与原文同目录、同文件名加语言后缀,如 index.en.md
Q主题参数不生效
Aoutputs、pagination、imaging、sitemap 等站点级配置写在主题里无效

上线前检查#

  • baseURL 换成正式域名
  • params.description、params.images 换成自己的
  • siteage 填建站日期
  • 确认 hugo --minify 构建 0 ERROR
  • 若启用评论,验证 giscus 能正常加载
目录
配置指南 配置分三层 最小可用配置 只能写在站点里的配置 主题参数 首页 背景 评论 多语言 导航菜单 内容与字段 数据文件 常见问题 上线前检查

未选择歌曲

未知艺术家

0:00 0:00