
Hugo 前言(front matter)中的 title 字段原生不支持 Markdown 渲染,但可通过模板层调用 markdownify 函数实现标题的富文本效果,如删除线、斜体、链接等。
hugo 前言(front matter)中的 title 字段原生不支持 markdown 渲染,但可通过模板层调用 markdownify 函数实现标题的富文本效果,如删除线、斜体、链接等。
在 Hugo 中,前言(front matter)严格按所选格式(TOML/YAML/JSON)解析为纯字符串,所有 Markdown 语法(如 <s>$100</s>、<em>italic</em> 或 @#@#@#@#@#@#@#@#@#@0)在 front matter 内均被当作普通文本处理,不会被渲染为 HTML。因此,即使你在 TOML 中写:
+++ date = "2016-11-15T09:36:44+05:30" draft = true title = "Grab it for <s>$100</s> $40" +++
最终 <s>$100</s> 也会以字面形式输出,而非带删除线的效果。
✅ 正确解法:在模板中对 .Title 执行 Markdown 解析
Hugo 提供了内置函数 markdownify,可将字符串安全地转换为 HTML。你只需在对应布局文件(如 layouts/_default/single.html 或 layouts/partials/header.html)中,将原本直接输出标题的代码:
<h1>{{ .Title }}</h1>
替换为:
<h1>{{ .Title | markdownify }}</h1>
⚠️ 注意事项:
文档转 Markdown 转换器 - 将 DOCX、PPTX、Excel 文件转换为 Markdown。用于从 Word 文档、PowerPoint 演示文稿或 E... 提取内容。
-
markdownify会解析标准 Markdown(如**bold**、*italic*、~~strikethrough~~),但 HTML 标签(如<s></s>)默认不被解析 —— 因为 Hugo 的 Goldmark 渲染器默认禁用原始 HTML 以保障安全。若需使用<s></s>,有两种选择:- ✅ 推荐:改用 Markdown 删除线语法
~~$100~~(Goldmark 原生支持); - ⚠️ 进阶:在
config.toml中启用原始 HTML(仅限可信内容):[markup.goldmark.renderer] unsafe = true
此后
<s>$100</s>才能生效。
- ✅ 推荐:改用 Markdown 删除线语法
? 小技巧:为避免影响其他页面,建议仅在需要富文本标题的模板中使用 markdownify,并确保标题内容无恶意脚本(因 unsafe = true 会解除 XSS 防护)。
总结:Hugo 不在 front matter 层支持 Markdown,但通过 {{ .Title | markdownify }} 在模板层实现标题富文本是标准、安全且灵活的方案。配合 ~~strikethrough~~ 等原生 Markdown 语法,即可优雅达成“$100 → $40”等营销文案效果。










