Info
本文使用 DeepSeek V4.1 Flash 辅助排版和资料收集
前言
每次写文章,想塞个链接卡片或者折叠面板,都得先去翻一遍主题仓库的 README.md,然后翻 Release Note ,翻不到还得再翻 layouts/shortcodes/ 里的模板文件
翻多了实在是烦,索性整理成一篇文章,以后再要用到就可以来看这个不用到处翻了
好像也可以让 Agent 直接看这个
另外主题的模板只用了一部分 Hugo 的能力,Hugo 自己还带了一批内置短代码,一起收进来了
正文
一些前置提醒
- Hugo 版本目前以
0.158.0为准,之后会跟随主题升级而升级 - 主题是 hugo-theme-reimu,本站对样式进行了少许修改但是短代码是一样的
- 主题样式目前以
v0.16.0为准,之后会跟随主题升级而升级 - 短代码的参数不能位置参数和命名参数混着用,要么全用位置参数,要么全用
key=value - 参数值里带空格要用引号包起来,比如
title="Hello World"
一、主题自带的短代码
| 短代码 | 用途 | 主要参数 | 快速跳转 |
|---|---|---|---|
link | 链接卡片,内外链通用 | title link/path cover escape | 链接卡片 |
friendsLink | 友链卡片墙 | 无 | 友链卡片 |
postLinkCard | path cover escape | ||
externalLinkCard | title link cover | ||
alertBlockquote | 带图标的提示块 | type | 提示块 |
details | 折叠面板 | summary | 折叠面板 |
tabs | 标签页切换 | 位置参数 | 标签页 |
gallery | 照片墙 | 无 | 照片墙 |
grid | 网格布局 | width col | 网格布局 |
tagRoulette | 标签轮盘 | tags icon | 标签轮盘 |
heatMapCard | 文章热力图 | levelStandard | 文章热力图 |
link 链接卡片
v0.14.0 引入,内外链通用卡片
用于替代 postLinkCard 和 externalLinkCard 这两个旧写法
示例
用法
| |
| 参数 | 必填 | 说明 |
|---|---|---|
title | 外链必填 | 卡片标题。内链可以省略,自动取目标文章标题 |
link / path | 是 | 链接地址。两个名字等价,外链用 link,站内用 path 更好读 |
cover | 否 | 封面。auto = 自动使用封面(外链显示地球图标,内链用站点的 banner)填图片地址 = 用这张图;留空 = 不显示封面 |
escape | 否 | 标题是否做 HTML 转义,默认 true。标题里要放 HTML 就写 false |
站内链接的目标找不到时,Hugo 构建会直接报错
friendsLink 友链卡片
初始版本 v0.0.1 引入,友链渲染卡片
读取 data/friends.yml,把里面所有友链渲染成一片卡片,无参数
示例
参见 友情链接
用法
| |
除了友链基本用不到
postLinkCard / externalLinkCard 站内、站外卡片
初始版本 v0.0.1 引入,分别用于站内文章和站外链接的卡片
v0.14.0 版本后被 链接卡片 取代。
示例
用法
| |
| 参数 | 必填 | 说明 |
|---|---|---|
path | postLinkCard 必填 | 站内页面路径,标题和摘要都从目标文章取 |
link | externalLinkCard 必填 | 站外链接地址 |
title | externalLinkCard 必填 | 卡片标题postLinkCard 不读这个参数 |
cover | 否 | 和 link 一样:auto 用站点 banner(外链是地球图标)也可以填图片地址,留空不显示 |
escape | 否 | 只有 postLinkCard 支持,标题是否做 HTML 转义,默认 trueexternalLinkCard 不读这个参数 |
这两个短代码的模板只读上面列出来的参数,多写的参数不会报错,但也不会有任何效果
这里写一下做留档,新写的话一律用 链接卡片 就好
alertBlockquote 提示块
v0.12.1 引入
给 Hugo v0.132.0 以下兜底,那些版本用不了块引用 render hooks,只能靠这个短代码显示带图标的提示框
示例
Tip
这里写内容,里面可以正常写 Markdown,比如 加粗、
行内代码,也可以放列表:
- 第一项
- 第二项
用法
| |
type 可选的值和主题 CSS 里定义的配色:
type | 图标 | 说明 |
|---|---|---|
note / info | 感叹号圆形 | 普通信息,两种写法共用一套配色 |
tip | 对勾圆形 | 提示、小技巧 |
important | 圆点 | 重点 |
warning | 三角感叹号 | 警告 |
danger / caution | 叉圆形 | 危险操作,两种写法共用一套配色 |
Hugo v0.132.0 以上的 Hugo 版本可以直接用块引用提示框(> [!TIP] 那种写法),更推荐 Markdown 原生写法
details 折叠面板
v0.14.1 引入,只有 summary 一个参数,不填的话标题就是空的
示例
点我展开
折叠起来的内容,同样支持 Markdown
用法
| |
注意这个短代码覆盖了 Hugo 内置的同名短代码,该主题的
details没有open、class这些参数
tabs 标签页
v0.14.0 引入,借鉴 next、volantis、stellar 几个主题,用来做多方案并列展示
示例
用法
| |
两个位置参数都可选:
| 位置 | 说明 |
|---|---|
| 第一个 | 默认激活第几个标签页,从 1 开始数,默认 1 |
| 第二个 | 填 center 让标签标题居中,不填则左对齐 |
每个标签页用 <!-- tab 标题 --> 分隔,tab 是固定前缀,后面才是自己的标题,中间有没有空格都行
标题里可以用 @ 加十六进制码点来加图标,码点来自主题配置里的 iconfont 项目:
<!-- tab 标题 -->—— 只有文字<!-- tab @e60c -->—— 只有图标<!-- tab 标题@e60c -->—— 图标加文字
gallery 照片墙
v0.14.0 引入,把一组图片排成响应式照片墙,自动按图片宽高比分配空间
点开走 Photoswipe 灯箱,排列逻辑是每行高度固定 200px、最多放 4 张
示例
用法
| |
无参数,往里面丢标准 Markdown 图片就行
grid 网格布局
v0.14.1 引入,内容分格展示,每格独立渲染 Markdown
示例
第一格
这里有独立渲染的 Markdown
第二格
- 列表项
- 列表项
第三格
行内代码
用法
| |
| 参数 | 默认 | 说明 |
|---|---|---|
width | 240 | 最小列宽,单位 px。布局是 repeat(auto-fit, minmax(width, 1fr)) |
col | 自适应 | 固定列数,写了就变成 repeat(col, 1fr),不再自适应 |
格子之间用 <!-- cell --> 分隔,中间的空格加不加都能识别
上面示例里 >}} 前面留的那个空格不能省。col=3 这种不带引号的数值如果直接贴着 >}} 写,Hugo 会把 >}} 一起当成参数值,
然后报 unrecognized character in shortcode action。要么加空格,要么把值写成 col="3"
tagRoulette 标签轮盘
v0.12.0 引入,点击按钮从标签池里随机抽一个展示,卡片样式来自 5ime 的博客
示例
用法
| |
| 参数 | 默认 | 说明 |
|---|---|---|
tags | 几个示例标签 | 标签池,英文逗号分隔 |
icon | 🕹️ | 触发按钮上的图标,emoji 或文字都行 |
页面加载时会自动滚一次,点击按钮再滚一次
heatMapCard 文章热力图
v0.8.0 引入,把全站文章按日期和字数铺成一张热力图,点格子弹出当天的文章列表
示例
用法
| |
levelStandard 是等级阈值,按文章字数分级,默认 "1000,5000,10000",也就是四档:≤1000 一档,≤5000 二档,≤10000 三档,再多就是最高档
渲染时会遍历全站所有文章算字数,文章多了这页会变慢,放一页就够了
二、Hugo 内置短代码
Hugo 自带的短代码,不需要在主题里定义就能用。
需要注意,主题里同名的短代码会覆盖 Hugo 内置的,reimu 的 details 就是这种情况。
figure 图片加图注
比裸 Markdown 图片多一层 figure + figcaption 结构,适合需要图注、署名、点击跳转的图
示例
图注文字,支持 Markdown
洛初
用法
| |
| 参数 | 说明 |
|---|---|
src | 图片地址,必填 |
alt | alt 属性 |
width / height | 图片的宽高属性 |
loading | eager 或 lazy |
class | 加到 figure 元素上的 class |
link / target / rel | 包在图片外面那层 a 标签的 href、target、rel |
title | 图注里的小标题,包在 h4 里,排在前面 |
caption | 图注正文,支持 Markdown,排在后面 |
attr / attrlink | 署名文字和它的链接 |
其实用  加一行 <center>图注</center>更实用一点
highlight 手动高亮代码
普通代码块用三个反引号就够了,highlight 用在需要单独指定高亮行的场合
示例
| |
用法
| |
位置参数依次是 CODE、LANG、OPTIONS。常用选项:
| 选项 | 默认 | 说明 |
|---|---|---|
lineNos | false | 显示行号,可填 true / false / inline / table |
hl_lines | 无 | 高亮的行,空格分隔,如 2-4 7 |
lineNoStart | 1 | 第一行显示成几 |
lineAnchors | 无 | 行号锚点的前缀,用来生成唯一 id |
anchorLineNos | false | 行号本身变成锚点链接 |
noClasses | true | true 用内联样式,false 走外部 CSS |
style | monokai | 配色方案名 |
tabWidth | 4 | 一个 tab 换成几个空格 |
wrapperClass | highlight | 最外层元素的 class,v0.140.2 新增 |
guessSyntax | false | LANG 留空时自动猜语言 |
hl_inline | false | 不加外层容器,直接输出 |
ref 和 relref 站内链接
给站内页面生成链接,ref 出绝对地址,relref 出相对地址
示例
https://blog.luochu.cc/post/guide/write-helper/%E4%B8%BB%E9%A2%98-reimu-%E7%9A%84%E7%9F%AD%E4%BB%A3%E7%A0%81%E6%95%B4%E7%90%86/ —— ref,绝对地址
/post/guide/write-helper/%E4%B8%BB%E9%A2%98-reimu-%E7%9A%84%E7%9F%AD%E4%BB%A3%E7%A0%81%E6%95%B4%E7%90%86/ —— relref,相对地址
用法
| |
| 参数 | 说明 |
|---|---|
path | 目标页面路径。不以 / 开头时,先按当前页面解析,再按全站解析 |
lang | 目标页面的语言,默认当前语言 |
outputFormat | 目标页面的输出格式,默认当前输出格式 |
写的时候要用百分号定界(% 而不是 <、>),因为要的是链接地址本身,不是 HTML 块。
Hugo 自己的文档现在把 Markdown 里的 ref 标成了 obsolete,推荐直接用 Markdown 相对路径
找不到目标页面时默认直接报错终止构建,可以在配置里放宽:
| |
这个直接用 link 其实更方便(
param 读参数
把页面的 front matter 或者站点参数读进正文里
示例
本页标题是「主题 reimu 的短代码整理」,站点作者是「洛初」
用法
| |
参数就是参数名,嵌套的用点号连起来,比如 author.name
页面 front matter 里没有就去找站点参数,两边都没有会直接报错,同样要用百分号定界
qr 二维码
Hugo v0.141.0 新增,把一段文字或网址渲染成二维码图片
示例

用法
| |
| 参数 | 默认 | 说明 |
|---|---|---|
text | 无 | 要编码的内容,不写则取标签之间的内容 |
level | medium | 纠错等级:low / medium / quartile / high |
scale | 4 | 每个模块占几个像素,不能小于 2。要写成不加引号的整数,scale="4" 会报错 |
targetDir | 无 | 生成的图片放在 publishDir 下的哪个子目录 |
alt / title / class / id / loading | 无 | 输出 img 元素上的同名属性 |
youtube / vimeo / x / instagram
都是 oEmbed 嵌入,构建时需要能联网,断网的话会打警告,页面里留一段报错文本
示例
我不怎么用就不放示例了
用法
| |
youtube 的参数比较多:
| 参数 | 默认 | 说明 |
|---|---|---|
id | 无 | 视频 ID,作为唯一位置参数时可以省略参数名 |
start / end | 无 | 起止秒数 |
autoplay | false | 自动播放,开了会强制静音 |
mute | false | 静音 |
controls | true | 显示控制条 |
loop | false | 循环播放,开了之后 start 和 end 只在第一遍生效 |
allowFullScreen | true | 允许全屏 |
loading | eager | eager 或 lazy |
class | 无 | 外层容器 class,写了会去掉内联样式 |
title | YouTube video | iframe 的 title 属性 |
vimeo 是 id、allowFullScreen、loading、title、class,
其中 allowFullScreen 和 loading 是 v0.146.0 才加的
x 就两个参数,user 是账号名、id 是推文数字 ID,Hugo v0.141.0 新增,旧名叫 twitter
instagram 只接一个位置参数,从帖子链接里 /p/ 后面那段拿
已经被移除的
这几个写上去会直接让构建报错:
| 短代码 | 状态 |
|---|---|
gist | v0.143.0 弃用,v0.156.0 移除。要贴 Gist 就自己写 script 标签,或者把代码直接贴进代码块 |
twitter / tweet | v0.142.0 弃用,v0.156.0 移除。改用 x |
comment | v0.143.0 弃用,会打警告。改用 HTML 注释 |
这篇就当自己的速查表用,后面主题或者 Hugo 升级有新东西再回来补
要是网站里有什么错误欢迎多多指正~



(〃∀〃)