文档章节
渲染钩子
用模板覆盖 Markdown 元素到 HTML 的转换,逐类控制链接、图片、标题与代码块输出。
渲染钩子是什么
把 Markdown 转换为 HTML 时,渲染钩子(render hook)可以覆盖默认的转换结果。每个钩子都是一个模板,受支持的元素类型各对应一个模板,模板放在项目的 layouts/_markup/ 目录中。
能覆盖哪些元素
目前可以创建渲染钩子的元素类型包括:
- 引用块(
render-blockquote.html) - 代码块(
render-codeblock.html) - 标题(
render-heading.html) - 图片(
render-image.html) - 链接(
render-link.html) - 透传元素(
render-passthrough.html) - 表格(
render-table.html)
只有在项目中提供了对应模板的元素才会改用钩子输出,没有提供模板的元素仍按默认方式渲染。渲染钩子只适用于 Markdown,无法为 Hugo 支持的其他内容格式创建钩子。
钩子能做什么
- 给站外链接补上
rel="external"之类的属性,或改写链接与图片的目标地址。 - 把独立图片渲染进
figure元素,并附带题注。 - 为标题追加锚点链接,或调整标题的属性与层级输出。
- 把代码块交给内建语法高亮器(Chroma)处理,或交给自定义渲染,例如 Mermaid 图表。
- 按引用块的类型区分普通引用与警示块,输出不同的结构。
- 用渲染钩子把公式交给 KaTeX 在构建时渲染,而不是等浏览器执行 JavaScript。
本章各页分工
简介介绍钩子的共同机制:模板位置与命名、查找顺序、默认渲染与自定义渲染的关系。其余各页按元素类型展开,逐项列出该钩子可用的上下文变量与典型用法:链接、图片、标题、代码块、引用块、表格、原样透传。
建议先读简介,再按需要查阅具体元素类型。
本章内容
- 简介 渲染钩子的共同机制:模板位置与命名、查找顺序,以及默认渲染与自定义渲染的关系。 (今天)
- 链接 创建链接渲染钩子,覆盖 Markdown 链接到 HTML 的转换,并了解可用的上下文变量。 (今天)
- 图片 创建图片渲染钩子,覆盖 Markdown 图片到 HTML 的转换,并了解上下文与内建钩子。 (今天)
- 标题 创建标题渲染钩子,覆盖 Markdown 标题到 HTML 的转换,并为标题追加锚点链接。 (今天)
- 代码块 创建代码块渲染钩子,覆盖围栏代码块的默认高亮输出,并按语言定制渲染方式。 (今天)
- 引用块 创建引用块渲染钩子,覆盖 Markdown 引用块的渲染,并处理 NOTE 等警示块类型。 (今天)
- 表格 创建表格渲染钩子,遍历表头与表体单元格,覆盖 Markdown 表格到 HTML 的转换。 (今天)
- 原样透传 创建透传渲染钩子,处理 Goldmark 透传扩展捕获的文本片段,例如在构建时渲染公式。 (今天)