这篇文章是我为本站写的一个备用写作手册,专门用来以后忘了有什么功能用法的一个备份。:以后新建 Markdown 文章时,当前这个博客到底支持什么,应该怎么写?
本文依据当前仓库中的配置、布局、短代码和已有文章整理。当前站点使用 Hugo Extended v0.164.0、Blowfish v2.102.0、Goldmark Markdown、Waline 评论、Firebase 阅读量和点赞、KaTeX 数学公式,以及中文和日文两套内容。
当前仓库自定义的短代码有:
- bilibili:B 站 BV 视频播放器;
- video-link:外部视频封面链接;
- gallery:图片网格和自动平衡画廊;
- carousel:图片轮播;
- link-card:官方链接卡片;
- promo-card 和 promo-grid:宣传卡片;
- mark:再次按 Markdown 渲染内部内容;
- callou:自定义提示框,名字是 callou,不是 callout。
一、最快开始:新建一篇文章#
1. 最小文章模板#
在 content/notes/、content/life/ 或 content/misc/ 下新建 Markdown 文件,例如:
content/notes/tools/我的新文章.md你也可以这样来新建笔记:
hugo new 笔记目录/笔记名称.md内容可以从下面开始:
---
title: "我的新文章"
date: 2026-07-24T22:00:00+08:00
description: "一句话说明这篇文章写了什么。"
showTableOfContents: true
tags:
- Hugo
- Markdown
categories:
- 博客
---
## 第一部分
正文从这里开始。保存后启动本地预览:
hugo server草稿也需要显示时:
hugo server -D生成生产文件:
hugo --gc --minify2. 当前栏目怎么选择#
| 目录 | 用途 | 当前内容示例 |
|---|---|---|
| content/notes/ | 技术笔记、教程和知识总结 | Linux、Git、Vim、数学 |
| content/life/ | 旅行、日常、动漫和生活记录 | 关西游记、观后感 |
| content/misc/ | 杂项和暂时不能归类的内容 | Hexo 记录 |
首页和主要列表由 params.toml 中的 mainSections = [“notes”, “life”, “misc”] 控制。
二、文件结构和图片资源#
1. 单文件文章#
适合没有专属图片的文章:
content/
└── notes/
└── tools/
└── docker.md2. Article Bundle:图文文章推荐使用#
有很多只属于这篇文章的图片时,使用目录形式:
content/
└── life/
└── travel/
└── my-trip/
├── index.md
├── featured.jpg
└── images/
├── 01.jpg
└── 02.jpg正文中的图片可以直接引用:
这种方式最适合 figure、gallery 和 carousel,因为图片就是当前页面的 Page Resources。
3. _index.md 和 index.md#
| 文件 | Hugo 含义 | 用途 |
|---|---|---|
| _index.md | Branch Page | 栏目页、列表页 |
| index.md | Leaf Page | 具体文章页 |
| name.md | 单文件文章 | 没有专属资源的简单文章 |
栏目页示例:
---
title: "工具"
description: "命令行、Docker、网络和日常工具记录。"
---4. 中文和日文文件#
当前站点使用语言后缀:
content/notes/tools/docker.md # 中文
content/notes/tools/docker.ja.md # 日文同名的 md 和 ja.md 会被 Hugo 视为同一篇内容的两个语言版本。
5. 图片放在哪里#
| 位置 | 正文中常见写法 | 适用场景 |
|---|---|---|
| 当前文章目录 | images/01.jpg | 文章专属图片,最推荐 |
| assets/ | /img/logo.png | 站点资源、可由 Hugo 处理 |
| static/ | /downloads/file.pdf | 原样复制到网站根路径 |
不要写本机绝对路径,例如 /Users/ice/…;文件名大小写必须完全一致。
三、Front Matter:文章顶部配置#
Front Matter 位于文件最顶部两个 — 之间,不会显示在正文中,但决定标题、日期、标签、目录、封面和页面功能。
1. 常用字段#
| 字段 | 用途 | 示例 |
|---|---|---|
| title | 文章标题 | title: “Linux 文件描述符” |
| date | 发布时间和排序 | date: 2026-07-24T22:00:00+08:00 |
| lastmod | 最近修改时间 | lastmod: 2026-07-25T10:30:00+08:00 |
| description | 页面描述、搜索和分享摘要 | description: “介绍 Linux 文件描述符。” |
| summary | 列表中的手动摘要 | summary: “一篇入门文章。” |
| tags | 关键词标签 | tags: [Linux, 内核] |
| categories | 较大的分类 | categories: [Linux] |
| draft | 是否草稿 | draft: true |
| slug | URL 最后一段 | slug: linux-fd |
| url | 自定义完整地址 | url: “/notes/linux/fd/” |
| aliases | 旧地址跳转 | aliases: ["/old/fd/"] |
| featureImage | 封面图 | featureImage: “/img/kumiko_jump.png” |
完整示例:
---
title: "Linux 文件描述符:fd、重定向与打开文件表"
date: 2026-07-24T22:00:00+08:00
lastmod: 2026-07-25T10:30:00+08:00
description: "从 shell 重定向开始,解释文件描述符和打开文件表之间的关系。"
summary: "一篇面向初学者的 Linux 文件描述符入门。"
tags:
- Linux
- 文件描述符
- 重定向
categories:
- Linux
slug: linux-fd
aliases:
- /notes/linux/old-fd/
---2. 文章功能开关#
当前 article 全局默认值:
| 字段 | 默认值 | 作用 |
|---|---|---|
| showTableOfContents | true | 显示目录 |
| showMath | true | 加载数学公式支持 |
| showDate | true | 显示发布日期 |
| showDateUpdated | true | 显示更新时间 |
| showBreadcrumbs | true | 显示面包屑 |
| showTaxonomies | true | 显示标签和分类 |
| showAuthor | true | 显示作者 |
| showComments | true | 显示评论区 |
| showViews | true | 显示阅读量 |
| showLikes | true | 显示点赞 |
| showReadingTime | true | 显示预计阅读时间 |
| showWordCount | true | 显示字数 |
| showZenMode | true | 显示专注阅读模式 |
| showEdit | true | 显示 GitHub 编辑入口 |
| showPagination | true | 显示上一篇和下一篇 |
| showRelatedContent | true | 显示相关文章 |
| showHero | false | 默认不显示大 Hero 图 |
单篇文章可以覆盖:
---
showTableOfContents: true
showMath: true
showComments: false
showViews: false
showLikes: false
showHero: true
showEdit: false
relatedContentLimit: 5
---3. 封面和 Hero 图#
直接指定封面:
featureImage: "/img/kumiko_jump.png"或者在文章目录里放置以 feature 开头的图片:
content/life/travel/my-trip/
├── index.md
└── featured.jpg全局 showHero = false。想在当前文章顶部显示大图:
showHero: true
heroStyle: "background"4. 分类和标签#
当前使用 Hugo 默认的 tags 和 categories:
tags:
- Docker
- GitLab
- 部署
categories:
- DevOps
- 计算机建议 categories 表示大主题,tags 表示具体关键词;同一个词尽量保持拼写一致。
四、标准 Markdown#
本站的 Goldmark 已开启表格、任务列表、删除线、自动链接、定义列表和数学公式 passthrough。
1. 标题和段落#
# 一级标题
## 二级标题
### 三级标题
这是普通段落。段落之间空一行。文章标题已经由 Front Matter 的 title 显示,正文一般从 ## 开始。目录范围是 h2 到 h4。
2. 文本强调#
**粗体**
*斜体*
~~删除线~~
普通文本中的命令可以写成行内代码。
***粗体斜体***3. 链接#
[Hugo 官网](https://gohugo.io/)
<https://gohugo.io/>
[站内另一篇文章](../../linux/Linux文件描述符-fd.md)
[跳转到本文 Front Matter 部分](#三front-matter文章顶部配置)文章移动后要检查相对链接。
4. 列表#
- 第一项
- 第二项
- 第二项的子项
1. 第一步
2. 第二步
3. 第三步5. 任务列表#
- [x] 已完成
- [ ] 尚未完成6. 引用和提醒块#
普通引用:
> 这是普通引用。
>
> 引用可以有多个段落。主题支持 GitHub/Obsidian 风格的提醒块:
> [!NOTE]
> 这是说明。
> [!TIP]
> 这是技巧。
> [!WARNING]
> 这是警告。常见类型有 NOTE、TIP、IMPORTANT、WARNING、CAUTION,也支持 INFO、SUCCESS、QUESTION、DANGER、BUG、EXAMPLE、QUOTE。
7. 分割线#
---8. 表格#
| 命令 | 作用 |
| --- | --- |
| hugo server | 启动预览 |
| hugo --gc | 生成并清理缓存 |
| git status | 查看工作区状态 |对齐方式:
| 左对齐 | 居中 | 右对齐 |
| :--- | :---: | ---: |
| A | B | C |9. 定义列表#
Hugo
: 静态网站生成器。
Markdown
: 纯文本标记语言。10. 图片#
普通图片:
如果需要图片说明、外链或关闭放大,使用 figure。
11. HTML#
markup.toml 中设置了 goldmark.renderer.unsafe = true,可以使用 HTML:
<details>
<summary>点击展开</summary>
这是折叠内容。
</details>不要把未经检查的用户输入、外部脚本或敏感 HTML 放入文章。
五、代码块#
1. 带语言的代码块#
~~~bash
mkdir -p content/notes/tools
hugo server
~~~当前高亮主题是 Dracula,代码块支持复制按钮。
常用语言名:bash、shell、python、javascript、typescript、go、rust、java、cpp、html、css、toml、yaml、json。
2. 高亮指定行#
~~~go {hl_lines=["3", "5-6"]}
package main
import "fmt"
func main() {
fmt.Println("hello")
}
~~~如果行高亮不生效,先退回最基本的语言代码块。
六、图片功能#
1. figure:单张图片#
Blowfish 的 figure 支持:
| 参数 | 用途 |
|---|---|
| src | 必填,图片路径或 URL |
| alt | 替代文本 |
| caption | 图片说明,支持 Markdown |
| class | 图片 CSS 类 |
| figureClass | 外层 figure 的 CSS 类 |
| href | 点击图片的链接 |
| target | 链接打开方式 |
| nozoom | true 时关闭放大 |
| default | true 时使用 Hugo 默认 figure |
示例:
{{< figure
src="featured.png"
alt="文章主视觉"
caption="这是一段 **支持 Markdown** 的说明。"
>}}带链接:
{{< figure
src="map.png"
alt="路线图"
caption="点击查看原图。"
href="https://example.com/map"
target="_blank"
nozoom="true"
>}}2. gallery:图片网格#
当前仓库覆盖了主题默认 gallery:
{{< gallery >}}
<img src="01.jpg" class="grid-w50" alt="照片 1" />
<img src="02.jpg" class="grid-w50" alt="照片 2" />
{{< /gallery >}}常见宽度:
| 类名 | 效果 |
|---|---|
| grid-w25 | 约四列 |
| grid-w33 | 约三列 |
| grid-w50 | 约两列 |
| grid-w66 | 约三分之二宽 |
| grid-w100 | 整行 |
响应式:
{{< gallery >}}
<img src="01.jpg" class="grid-w50 md:grid-w33" alt="照片 1" />
<img src="02.jpg" class="grid-w50 md:grid-w33" alt="照片 2" />
<img src="03.jpg" class="grid-w50 md:grid-w33" alt="照片 3" />
{{< /gallery >}}当前自定义 JavaScript 会在桌面端、图片数量较多且比例差异明显时自动平衡画廊高度。每张图片都要写 alt;同一组图片尽量统一宽度类。
gallery 中也可以嵌套带说明的 figure:
{{< gallery >}}
{{< figure
src="01.jpg"
alt="第一张"
caption="第一天早晨。"
figureClass="grid-w33"
>}}
{{< figure
src="02.jpg"
alt="第二张"
caption="车站附近。"
figureClass="grid-w33"
>}}
{{< /gallery >}}3. carousel:轮播图#
当前仓库的 carousel 是自定义实现。
| 参数 | 默认值 | 说明 |
|---|---|---|
| images | 无 | 必填,图片路径,用逗号分隔 |
| aspectRatio | 16-9 | 比例,例如 16-9、4-3 |
| interval | 2000 | 自动切换间隔,单位毫秒 |
| captions | 无 | 图片名和说明的映射 |
基础示例:
{{< carousel
images="01.jpg,02.jpg,03.jpg"
aspectRatio="16-9"
interval="4000"
>}}带说明:
{{< carousel
images="01.jpg,02.jpg,03.jpg"
aspectRatio="4-3"
interval="3000"
captions="{01.jpg:第一天,02.jpg:车站,03.jpg:夜景}"
>}}注意:
- 当前实现使用逗号分隔,逗号后不要加多余空格;
- 图片推荐放在当前文章 Bundle;
- 支持左右按钮、指示器和自动播放;
- 点击图片可放大,放大时轮播暂停;
- interval = 4000 表示 4 秒。
七、视频功能#
1. youtubeLite:YouTube#
参数是 id、label、params:
{{< youtubeLite
id="5Ai4fRBZBbo"
label="作品官方 PV"
>}}带播放参数:
{{< youtubeLite
id="5Ai4fRBZBbo"
label="作品官方 PV"
params="start=130&controls=0"
>}}2. video:本地或外部视频#
常用参数是 src、poster、caption、autoplay、loop、muted、controls、playsinline、preload、start、end、ratio、fit。
{{< video
src="movie.mp4"
poster="movie-poster.jpg"
caption="本地视频示例。"
controls="true"
playsinline="true"
preload="metadata"
ratio="16/9"
>}}自动播放一般需要同时静音:
{{< video
src="demo.webm"
autoplay="true"
muted="true"
loop="true"
>}}3. bilibili:本站 B 站播放器#
它会从 URL 中自动提取 BV 号。
{{< bilibili
url="https://www.bilibili.com/video/BV13h411k7Zk/"
label="第一季 OP"
>}}url 必须包含 BV 号。当前不会自动处理只有 av 号的链接,播放器默认关闭弹幕和自动播放。
4. video-link:外部视频卡片#
它只显示封面,点击后打开外部视频页面:
| 参数 | 别名 | 用途 |
|---|---|---|
| href | url | 外部地址 |
| thumbnail | image | 封面图片 |
| alt | 无 | 图片替代文本 |
| title | label | 标题 |
| platform | 无 | 平台名称 |
{{< video-link
href="https://www.example.com/video"
thumbnail="/img/video-cover.jpg"
alt="官方视频封面"
platform="官方网站"
title="点击打开官方视频页面"
>}}八、提示和折叠内容#
1. alert:主题原生提示框#
参数是 icon、iconColor、cardColor、textColor:
{{< alert icon="circle-info" >}}
这里是一条 **重要提示**,正文支持 Markdown。
{{< /alert >}}已有文章中使用过的图标包括 circle-info、triangle-alert、graduation-cap、eye、comment、heart、star、plane-departure、tag、pencil。
2. GitHub/Obsidian 提醒块#
> [!TIP]
> 这是一条技巧提示。
> [!WARNING]
> 这是一条警告。这种写法比 alert 更容易复制到其他支持 GitHub Alerts 或 Obsidian Callout 的工具中。
3. callou:本站自定义提示框#
文件名是 layouts/shortcodes/callou.html,所以调用名必须是 callou。支持 note、tip、important、warning、caution。
普通提示:
{{< callou type="tip" title="写作建议" >}}
标题和正文都可以使用 Markdown。
{{< /callou >}}可折叠:
{{< callou
type="warning"
title="点击查看注意事项"
foldable="true"
>}}
这里的内容默认折叠。
{{< /callou >}}默认展开:
{{< callou
type="note"
title="默认展开的说明"
foldable="true"
open="true"
>}}
说明内容。
{{< /callou >}}不需要折叠时直接省略 foldable,不要写 foldable=“false”。
4. accordion:多面板折叠#
Blowfish 原生 accordion 适合 FAQ、不同系统步骤和长补充内容:
{{< accordion mode="open" separated=true >}}
{{< accordionItem title="Linux" open=true >}}
Linux 安装步骤。
{{< /accordionItem >}}
{{< accordionItem title="macOS" >}}
macOS 安装步骤。
{{< /accordionItem >}}
{{< /accordion >}}mode=“collapse” 表示一次只展开一个,mode=“open” 表示可以同时展开多个。accordionItem 常用参数有 title、open、icon、align。
九、卡片功能#
1. link-card:官方链接卡片#
参数:
| 参数 | 别名 | 说明 |
|---|---|---|
| href | url,也支持第一个位置参数 | 必填,链接地址 |
| image | thumbnail | 图片,可选 |
| icon | 无 | 小图标 URL |
| title | 无 | 标题 |
| desc | description | 描述 |
| eyebrow | 无 | 顶部小标签 |
| cta | 无 | 按钮文案 |
| alt | 无 | 图片替代文本 |
{{< link-card
title="Hugo 官方文档"
desc="Hugo 的官方文档和配置参考。"
href="https://gohugo.io/documentation/"
image="/img/logo.png"
eyebrow="Official Documentation"
cta="打开官方文档"
alt="Hugo 文档"
>}}没有 image 时也可以显示纯文字卡片:
{{< link-card
title="项目仓库"
desc="查看这个博客的源代码。"
href="https://github.com/ice345/my-hugo-blog"
cta="访问 GitHub"
>}}2. promo-grid 和 promo-card:宣传卡片#
promo-grid 是容器,内部放 promo-card。promo-card 必须有 image。
参数:
| 参数 | 别名 | 说明 |
|---|---|---|
| href | url,也支持第一个位置参数 | 点击地址,可选 |
| image | thumbnail | 卡片主图,必填 |
| title | 无 | 标题 |
| description | 无 | 描述 |
| alt | 无 | 图片替代文本 |
| badges | 无 | 逗号分隔的标签 |
| badgeColors | colors | 逗号分隔的颜色 |
{{< promo-grid >}}
{{< promo-card
href="https://gohugo.io/"
image="/img/logo.png"
title="Hugo"
description="快速的静态网站生成器。"
badges="Static Site,Go"
badgeColors="violet,blue"
>}}
{{< /promo-grid >}}默认颜色有 peach、magenta、lime、violet、blue、orange、green、yellow,当前 CSS 还提供 brown 和 pink。
十、数学公式#
1. katex#
一篇文章中调用一次 katex 即可:
{{< katex >}}行内公式:
欧拉公式:\(e^{i\pi}+1=0\)。块级公式:
$$
f(x) = \int_{-\infty}^{+\infty} e^{-x^2}\,dx
$$也支持:
\[
a^2 + b^2 = c^2
\]2. 数学文章 Front Matter#
---
title: "数论知识"
showMath: true
---当前全局 showMath = true,但数学文章仍建议显式写出来。
3. 注意事项#
- 美元符号既可能是金额,也可能参与公式解析;
- 公式中的反斜杠必须保留,例如 \frac 和 \sqrt;
- 一个页面通常只需要一次 katex;
- 公式不显示时检查 showMath、分隔符和浏览器控制台。
十一、Blowfish 其他常用短代码#
下面是主题模块提供、当前内容中不一定已经使用的功能。第一次使用请先本地预览。
1. badge、button、icon#
badge:
{{< badge >}}
Beta
{{< /badge >}}button:
{{< button href="https://gohugo.io/" target="_blank" >}}
打开 Hugo
{{< /button >}}站内跳转可以使用 pageRef:
{{< button pageRef="notes/tools/" >}}
浏览工具笔记
{{< /button >}}icon:
{{< icon "github" >}}
{{< icon "openlist" >}}
{{< icon "obsidian" >}}自定义 SVG 放到 assets/icons/,调用时使用不带 .svg 的文件名。
2. lead、keyword、swatches#
lead:
{{< lead >}}
这是一段放大的文章导语。
{{< /lead >}}keyword:
{{< keywordList >}}
{{< keyword icon="code" >}}Markdown{{< /keyword >}}
{{< keyword icon="github" >}}GitHub{{< /keyword >}}
{{< /keywordList >}}swatches:
{{< swatches "#64748b" "#3b82f6" "#06b6d4" >}}3. mermaid:流程图#
{{< mermaid >}}
flowchart LR
A["写 Markdown"] --> B["Hugo 构建"]
B --> C["生成 HTML"]
C --> D["发布网站"]
{{< /mermaid >}}图中文字有括号或标点时建议加引号。
4. chart:图表#
{{< chart >}}
type: 'bar',
data: {
labels: ['一月', '二月', '三月'],
datasets: [{
label: '文章数',
data: [3, 5, 4]
}]
}
{{< /chart >}}内容使用 Chart.js 配置格式。
5. tabs 和 tab:多系统步骤#
{{< tabs >}}
{{< tab label="macOS" >}}
~~~bash
brew install hugo
~~~
{{< /tab >}}
{{< tab label="Linux" >}}
~~~bash
sudo pacman -S hugo
~~~
{{< /tab >}}
{{< /tabs >}}tabs 支持 group 和 default;tab 支持 label、icon、md。内部还要执行短代码时可以尝试 md=false。
6. timeline 和 timelineItem#
{{< timeline >}}
{{< timelineItem
icon="code"
header="开始写博客"
subheader="Hugo + Markdown"
badge="2026"
>}}
从 Markdown 开始记录学习过程。
{{< /timelineItem >}}
{{< /timeline >}}timelineItem 常用参数是 icon、header、subheader、badge、md。
7. typeit:打字机效果#
{{< typeit tag="h3" speed="50" loop="true" >}}
Hugo + Markdown
{{< /typeit >}}常用参数有 tag、classList、initialString、speed、lifeLike、startDelay、breakLines、waitUntilVisible、loop。动画应适量使用。
8. list 和 article#
最近文章列表:
{{< list limit=5 title="最近更新" cardView=true >}}按条件筛选:
{{< list
title="最近的笔记"
limit=6
where="Section"
value="notes"
>}}嵌入另一篇文章摘要:
{{< article
link="/notes/tools/docker/"
showSummary=true
compactSummary=true
>}}9. email、gist、mdimporter、codeimporter#
邮箱链接:
{{< email
email="mailto:hello@example.com"
text="给我发邮件"
subject="关于博客的留言"
>}}GitHub Gist:
{{< gist "octocat" "6cad326836d38bd3a7ae" >}}导入外部 Markdown:
{{< mdimporter
url="https://raw.githubusercontent.com/example/project/main/README.md"
>}}导入外部代码:
{{< codeimporter
url="https://raw.githubusercontent.com/example/project/main/main.go"
type="go"
startLine="10"
endLine="30"
>}}这些功能需要访问外部地址,网络失败时可能影响构建;重要内容建议保存到本仓库。
10. 外部平台卡片#
Blowfish 提供多个平台卡片:
{{< github repo="ice345/my-hugo-blog" showThumbnail=true >}}
{{< gitlab projectID="278964" >}}
{{< codeberg repo="forgejo/forgejo" >}}
{{< gitea server="https://git.example.com" repo="user/project" >}}
{{< forgejo server="https://forgejo.example.com" repo="user/project" >}}
{{< huggingface model="google-bert/bert-base-uncased" >}}
{{< huggingface dataset="stanfordnlp/imdb" >}}
{{< ansible role="geerlingguy.docker" >}}gitlab 需要项目数字 ID;gitea 和 forgejo 需要服务地址;huggingface 的 model 和 dataset 二选一;ansible 的 role 和 collection 二选一。
11. ltr 和 rtl:文字方向#
<div dir="rtl" class="text-right">
هذه فقرة من اليمين إلى اليسار
</div>这里用百分号分隔符,是为了让里面的 Markdown 正常解析。
十二、自定义短代码总表#
| 短代码 | 作用 | 关键参数 |
|---|---|---|
| bilibili | B 站 BV 视频内嵌 | url、label |
| video-link | 外部视频封面链接卡片 | href、thumbnail、platform、title |
| gallery | 图片网格和自动平衡 | 内部 img 的 class、alt |
| carousel | 图片轮播 | images、aspectRatio、interval、captions |
| link-card | 官方链接卡片 | href、image、title、desc、cta |
| promo-grid | 宣传卡片容器 | 内部放 promo-card |
| promo-card | 产品或服务卡片 | image、title、description、badges |
| mark | 再次按 Markdown 渲染 | 无 |
| callou | 自定义提示框和折叠 | type、title、foldable、open |
mark 的特别说明#
当前 mark.html 的实际实现只是把内部内容传给 markdownify,再直接输出。它没有输出真正的 mark 标签,也没有专门的高亮背景,因此不要把它当成黄色荧光笔功能。如果以后需要真正高亮,需要同时修改 layouts/shortcodes/mark.html 和 assets/css/custom.css。
十三、站点级功能#
1. 首页#
当前首页配置:
[homepage]
layout = "background"
homepageImage = "/img/background.svg"
showRecent = true
showRecentItems = 6
cardView = true
layoutBackgroundBlur = true效果是带背景图的首页,并显示最近 6 篇文章卡片。首页正文来自 content/_index.md。
2. 搜索和输出#
当前搜索已开启,首页输出 HTML、RSS 和 JSON:
[outputs]
home = ["HTML", "RSS", "JSON"]文章标题、description、tags 写得清楚,会更容易被搜索到。
3. 目录、代码复制和图片复制#
enableSearch = true
enableCodeCopy = true
enableImageCopy = true
[tableOfContents]
startLevel = 2
endLevel = 4代码块有复制按钮,图片支持复制,文章目录默认取 h2 到 h4。
4. 阅读量、点赞和评论#
当前阅读量和点赞由 Firebase 提供:
[firebase]
lowerCasePath = true当前实际启用 Waline:
[comments]
enable = true
[comments.waline]
enable = true
serverURL = "waline-blowfish-blog.vercel.app"Giscus 配置保留但关闭:
[comments.giscus]
enable = false同一篇文章不要随意更改 URL,否则统计路径会变化。
5. 外观和编辑入口#
defaultAppearance = "light"
autoSwitchAppearance = true
[footer]
showAppearanceSwitcher = true
showScrollToTop = true
[article]
showEdit = true
editURL = "https://github.com/ice345/my-hugo-blog/tree/master/content"
editAppendPath = true默认浅色,会根据系统切换;页脚有外观切换和回到顶部;文章页面有 GitHub 编辑入口。
十四、推荐写作流程#
- 先决定放在 notes、life 还是 misc。
- 有专属图片时建立文章 Bundle。
- 先写 title、date、description、tags、categories。
- 先用普通 Markdown 写清楚正文。
- 再补 figure、gallery、carousel、alert、卡片和视频。
- 本地运行 hugo server -D。
- 检查手机宽度、目录、图片、公式、链接和评论。
- 最后运行 hugo –gc –minify。
文章有很多图片时推荐结构:
我的文章/
├── index.md
├── featured.jpg
└── images/
├── 01.jpg
└── 02.jpg十五、常见问题#
1. 文章不显示#
检查:
- 是否写了 draft: true;
- 日期是否是未来时间;
- 是否使用 hugo server -D -F;
- 文件是否在 content/ 下;
- 两个 Front Matter 分隔线是否成对;
- YAML 缩进是否正确。
2. 图片不显示#
检查:
- Bundle 图片路径是否相对 index.md;
- assets/ 图片是否使用正确的站点路径;
- static/ 文件是否从根路径访问;
- 文件名大小写;
- 是否误写成本机绝对路径。
3. gallery 异常#
检查每个 img 是否有 grid-w25、grid-w33、grid-w50、grid-w66 或 grid-w100;检查 gallery 的开始和结束标签;不要把 gallery 嵌套在 gallery 中。
4. carousel 没有图片#
检查 images 是否用逗号分隔,是否存在多余空格,aspectRatio 是否写成 16-9,图片是否真的属于当前文章 Bundle。
5. bilibili 报错#
bilibili 必须使用包含 BV 号的 URL:
https://www.bilibili.com/video/BV13h411k7Zk/只有 av 号的链接当前不会自动转换。
6. 短代码原样显示#
可能是:
- 你正好把它写在代码块里,这是展示代码时的正常现象;
- 少了闭合标签;
- 写错了名字,例如 callout 写成了 callou,或反过来;
- 嵌套短代码需要 md=false;
- Hugo 主题模块没有成功加载。
7. 数学公式不显示#
检查是否调用 katex、公式分隔符是否成对、showMath 是否关闭、反斜杠是否被误删,并查看浏览器控制台。
8. 外部卡片构建失败#
github、gitlab、huggingface、ansible、mdimporter 和 codeimporter 依赖外部网络。重要内容可以暂时改成普通 Markdown 链接,或复制到仓库内。
十六、综合文章模板#
下面是一份可以复制后修改的模板:
---
title: "一篇示例文章"
date: 2026-07-24T22:00:00+08:00
description: "这是一篇展示本站写作功能的示例文章。"
showTableOfContents: true
showMath: true
featureImage: "/img/kumiko_jump.png"
tags:
- 示例
- Hugo
categories:
- 博客
---
## 导语
这是一段普通正文,可以使用粗体、斜体、行内代码和链接。
> [!TIP]
> 先写清楚内容,再补充复杂样式。
## 图片
{{< figure
src="feature.jpg"
alt="示例图片"
caption="这是一段图片说明。"
>}}
## 重点提示
{{< alert icon="circle-info" >}}
这里是需要读者注意的信息。
{{< /alert >}}
## 图片画廊
{{< gallery >}}
<img src="01.jpg" class="grid-w50" alt="照片 1" />
<img src="02.jpg" class="grid-w50" alt="照片 2" />
{{< /gallery >}}
## 数学公式
{{< katex >}}
行内公式:\(a^2+b^2=c^2\)。
$$
E = mc^2
$$
## 代码
~~~bash
hugo server -D
~~~
## 外部链接
{{< link-card
href="https://gohugo.io/"
image="/img/logo.png"
title="Hugo"
desc="静态网站生成器。"
eyebrow="Official Website"
cta="访问官网"
>}}十七、以后如何维护这份文档#
增加新功能时同步更新:
- 新增 layouts/shortcodes/xxx.html 后,在自定义短代码总表增加一行;
- 写清楚参数、默认值和一个完整例子;
- 修改 params.toml 后,更新站点级功能;
- 修改 markup.toml 后,更新 Markdown 或数学公式部分;
- 重命名短代码时记录迁移方式;
- 每次修改后运行 hugo –gc –minify。

