跳过正文
  1. 笔记/
  2. 工具与部署/

本站 Hugo + Markdown 写作功能参考

·8787 字·18 分钟· loading · loading · · ·
ICE345
作者
ICE345
CS Student | System | Linux | OCaml
目录

这篇文章是我为本站写的一个备用写作手册,专门用来以后忘了有什么功能用法的一个备份。:以后新建 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 --minify

2. 当前栏目怎么选择
#

目录用途当前内容示例
content/notes/技术笔记、教程和知识总结Linux、Git、Vim、数学
content/life/旅行、日常、动漫和生活记录关西游记、观后感
content/misc/杂项和暂时不能归类的内容Hexo 记录

首页和主要列表由 params.toml 中的 mainSections = [“notes”, “life”, “misc”] 控制。

二、文件结构和图片资源
#

1. 单文件文章
#

适合没有专属图片的文章:

content/
└── notes/
    └── tools/
        └── docker.md

2. Article Bundle:图文文章推荐使用
#

有很多只属于这篇文章的图片时,使用目录形式:

content/
└── life/
    └── travel/
        └── my-trip/
            ├── index.md
            ├── featured.jpg
            └── images/
                ├── 01.jpg
                └── 02.jpg

正文中的图片可以直接引用:

![第一天的风景](images/01.jpg)

这种方式最适合 figure、gallery 和 carousel,因为图片就是当前页面的 Page Resources。

3. _index.md 和 index.md
#

文件Hugo 含义用途
_index.mdBranch Page栏目页、列表页
index.mdLeaf 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
slugURL 最后一段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 全局默认值:

字段默认值作用
showTableOfContentstrue显示目录
showMathtrue加载数学公式支持
showDatetrue显示发布日期
showDateUpdatedtrue显示更新时间
showBreadcrumbstrue显示面包屑
showTaxonomiestrue显示标签和分类
showAuthortrue显示作者
showCommentstrue显示评论区
showViewstrue显示阅读量
showLikestrue显示点赞
showReadingTimetrue显示预计阅读时间
showWordCounttrue显示字数
showZenModetrue显示专注阅读模式
showEdittrue显示 GitHub 编辑入口
showPaginationtrue显示上一篇和下一篇
showRelatedContenttrue显示相关文章
showHerofalse默认不显示大 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. 图片
#

普通图片:

![大阪城公园](images/osaka-castle.jpg)

如果需要图片说明、外链或关闭放大,使用 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链接打开方式
nozoomtrue 时关闭放大
defaulttrue 时使用 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必填,图片路径,用逗号分隔
aspectRatio16-9比例,例如 16-9、4-3
interval2000自动切换间隔,单位毫秒
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:外部视频卡片
#

它只显示封面,点击后打开外部视频页面:

参数别名用途
hrefurl外部地址
thumbnailimage封面图片
alt图片替代文本
titlelabel标题
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:官方链接卡片#

参数:

参数别名说明
hrefurl,也支持第一个位置参数必填,链接地址
imagethumbnail图片,可选
icon小图标 URL
title标题
descdescription描述
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。

参数:

参数别名说明
hrefurl,也支持第一个位置参数点击地址,可选
imagethumbnail卡片主图,必填
title标题
description描述
alt图片替代文本
badges逗号分隔的标签
badgeColorscolors逗号分隔的颜色
{{< 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 正常解析。

十二、自定义短代码总表
#

短代码作用关键参数
bilibiliB 站 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 编辑入口。

十四、推荐写作流程
#

  1. 先决定放在 notes、life 还是 misc。
  2. 有专属图片时建立文章 Bundle。
  3. 先写 title、date、description、tags、categories。
  4. 先用普通 Markdown 写清楚正文。
  5. 再补 figure、gallery、carousel、alert、卡片和视频。
  6. 本地运行 hugo server -D。
  7. 检查手机宽度、目录、图片、公式、链接和评论。
  8. 最后运行 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="访问官网"
>}}

十七、以后如何维护这份文档
#

增加新功能时同步更新:

  1. 新增 layouts/shortcodes/xxx.html 后,在自定义短代码总表增加一行;
  2. 写清楚参数、默认值和一个完整例子;
  3. 修改 params.toml 后,更新站点级功能;
  4. 修改 markup.toml 后,更新 Markdown 或数学公式部分;
  5. 重命名短代码时记录迁移方式;
  6. 每次修改后运行 hugo –gc –minify。

十八、外部参考
#


评论