目录

如何在 DoIt 中编写文章

系列 - DoIt

本文说明在本站(Hugo + DoIt 主题)中如何新增文章、如何填写 front matter,以及如何与 content/ 下的分类、系列、标签、作者等目录配合使用。


  • 路径:所有博文放在 content/posts/ 下。
  • 文件名:建议使用英文或拼音,避免空格(可用 - 连接),例如:
    • how-to-DoIt.md
    • An Introduction to Flow Matching and Diffusion Models.md(含空格也可,但 URL 会转义)
  • 格式:Markdown(.md),文件开头必须是 YAML front matter(用 --- 包裹)。
---
title: "文章标题"
date: 2026-02-28
draft: false
---

其余字段会使用 config/_default/params.toml[page] 的默认值。


下面按「常用 → 可选」顺序说明各字段含义、可选值及与 content/ 目录的对应关系。

字段类型说明示例
title字符串文章标题,必填,用于列表与正文页"An Introduction to Flow Matching"
subtitle字符串副标题,可选,显示在正文标题下方"subtitle" 或留空
description字符串摘要/描述,用于 SEO 与摘要展示;不填时部分场景用正文摘要"本文介绍..."

规范建议title 简洁明确;description 可写一两句概括,便于搜索与列表展示。

字段类型说明与站点配置关系
date日期发布时间,建议必填格式由 params.dateFormat 控制(如 2006-01-02
lastmod日期最后修改时间,可选不写时:若 config/_default/hugo.tomlenableGitInfo = true,会使用该文件的 Git 最后提交时间;否则不显示“最后修改”

规范建议:新文章写上当天的 date;若希望“最后修改”来自 Git,可不写 lastmod 并保持 enableGitInfo = true

字段类型说明
draft布尔true 时文章不会在正式构建中发布;本地 hugo server 默认也不显示,需加 -D 才显示
authors列表作者标识列表,与 content/authors/ 及(若有)data/authors 配合使用,如 ["steven"]
(无 authors 时)使用站点默认作者:config/_default/params.toml[author]namelinkavatar

与 content 的兼容content/authors/_index.zh-cn.md(及 _index.en.md)是“作者”分类页;具体作者信息可在 data/authors/ 中配置,供 authors 引用。

这三类都会在文章页和列表页显示,且必须与 content 下已有目录/词条对应,否则链接会 404 或显示异常。

字段类型对应 content 结构说明
categories列表content/categories/<分类名>/每个元素对应一个分类目录名,如 ["documentation"]content/categories/documentation/,需存在 _index.zh-cn.md_index.en.md
series列表content/series/<系列名>/[getting-start]content/series/getting-start/,用于“系列”导航与列表
tags列表content/tags/<标签名>/["Flow Matching", "Diffusion"] → 会生成/使用 content/tags/ 下对应词条(通常由 Hugo 自动按 taxonomy 生成页面,若使用 tags/content/ 这种结构,则需存在对应 _index

规范建议

  • 先有目录再引用:新增分类或系列时,先在 content/categories/content/series/ 下新建目录并添加 _index.zh-cn.md(及多语言时的 _index.en.md),再在文章里写 categories / series
  • 命名一致:front matter 里的 categoriesseries 取值要与目录名一致(如 getting-start 对应 content/series/getting-start/)。
  • 标签:tags 一般会通过 Hugo taxonomy 自动建页,若你站有 content/tags/xxx/_index.zh-cn.md,则标签名需与 xxx 对应。

示例(与当前站点一致):

tags: ["Flow Matching", "Diffusion"]
categories: ["documentation"]
series: [getting-start]

即:该文属于分类「文档」、系列「开始使用 DoIt」,并带有两个标签。

字段类型说明
hiddenFromHomePage布尔true 时文章不会出现在首页文章列表中;默认 false(由 params.page.hiddenFromHomePage 控制)
hiddenFromSearch布尔true 时文章不会出现在站内搜索结果中(如 PageFind);默认 false

规范建议:正式发布的文章通常两者都设为 false;测试文或暂不对外展示的可设为 true

字段类型说明
featuredImage字符串正文头图 URL 或站点内路径(如 /images/xxx.webp
featuredImagePreview字符串列表/摘要卡中的预览图;不填时主题会回退使用 featuredImage

规范建议:若暂无头图可留空 "";图片建议放在 static/images/ 下,路径如 /images/xxx.webp

字段类型说明
toc.enable布尔是否显示文章目录(侧边/静态)
toc.auto布尔是否自动展开/折叠侧边目录;false 表示“始终展开”式
toc.keepStatic布尔是否在正文前保留静态目录块(可单独在 front matter 覆盖)
code.maxShownLines数字代码块默认展开行数,超过可折叠
code.lineNos布尔是否显示行号
code.copy布尔是否显示“复制”按钮
code.wrap布尔是否换行(长行)
code.header布尔是否显示代码块标题

未在 front matter 中写的项会使用 config/_default/params.toml[page.toc][page.code] 的默认值。

示例(长文、代码多时常用):

toc:
  enable: true
  auto: false

code:
  maxShownLines: 100
  lineNos: true
  copy: true

content 目录作用与 posts 的配合方式
content/posts/所有博文在此新增 .md,写好 front matter 与正文
content/categories/<名称>/分类页在文章里写 categories: ["名称"],且该目录需存在并含 _index
content/series/<名称>/系列页与系列导航在文章里写 series: [名称],且该目录需存在并含 _index
content/tags/标签页在文章里写 tags: ["标签A", "标签B"],与 taxonomy 或既有 tags/xxx/ 对应
content/authors/作者列表页使用 authors: ["id"] 时,可与 data/authors 或作者页结构配合
content/about/关于页独立页面,不依赖 posts front matter
content/showcase/展示页独立页面
content/offline/离线页独立页面

多语言:若启用多语言,_index 会有 _index.zh-cn.md_index.en.md 等;posts 的 front matter 不直接写语言,由文件名或 configdefaultContentLanguage 等决定。


---
title: "你的文章标题"
subtitle: ""                    # 可选
date: 2026-02-28                # 建议改成当天
# lastmod: 2026-02-28           # 可选;不写则用 Git 最后提交时间(需 enableGitInfo = true)
draft: false
# authors: [steven]             # 可选;不写则用站点默认作者
description: "一句话描述本文"

tags: ["标签1", "标签2"]
categories: ["documentation"]   # 需存在 content/categories/documentation/
series: [getting-start]         # 需存在 content/series/getting-start/

hiddenFromHomePage: false
hiddenFromSearch: false

featuredImage: ""
featuredImagePreview: ""

toc:
  enable: true
  auto: false

code:
  maxShownLines: 100
  lineNos: true
  copy: true
---

正文从第二个 --- 之后开始写,使用标准 Markdown;如需“摘要与全文分隔”,在摘要结束处插入 <!--more-->


  1. 必填titledatedraft(建议显式写 false 再发布)。
  2. 分类/系列:只填写已在 content/categories/content/series/ 下创建过的名称。
  3. 标签:与站点现有标签或 content/tags/ 结构一致,避免临时造词导致大量空标签页。
  4. 描述:正式文章建议写 description,便于 SEO 和列表展示。
  5. 头图:可选;若用,路径统一用站点内路径(如 /images/...)。
  6. lastmod:若希望由 Git 自动反映修改时间,可不写 lastmod 并保持 enableGitInfo = true

按上述方式在 content/posts/ 下新增或修改文章,即可与 DoIt 主题及本站 content/ 目录结构兼容、正常显示在首页、分类、系列与搜索中。

相关内容