表格渲染钩子
创建表格渲染钩子模板以覆盖 Markdown 表格到 HTML 的渲染。
New in
v0.134.0
上下文
表格_渲染钩子_ 模板接收以下 上下文:
- Attributes
- (
map) Markdown 属性,如果您的站点配置如下则可用:markup: goldmark: parser: attribute: block: true[markup] [markup.goldmark] [markup.goldmark.parser] [markup.goldmark.parser.attribute] block = true{ "markup": { "goldmark": { "parser": { "attribute": { "block": true } } } } } - Ordinal
- (
int) 页面上表格的从零开始的序号。 - Page
- (
page) 对当前页面的引用。 - PageInner
- (
page) 对通过RenderShortcodes方法嵌套的页面的引用。详见。 - Position
- (
string) 表格在页面内容中的位置。 - THead
- (
slice) 表格标题行的切片,其中每个元素是表格单元格的切片。 - TBody
- (
slice) 表格主体行的切片,其中每个元素是表格单元格的切片。
表格单元格
THead 和 TBody 方法返回的切片切片中的每个表格单元格具有以下字段:
- Alignment
- (
string) 表格单元格内文本的对齐方式,left、center或right之一。 - Text
- (
template.HTML) 表格单元格内的文本。
示例
在默认配置中,Hugo 根据 GitHub Flavored Markdown 规范 渲染 Markdown 表格。要创建执行相同操作的渲染钩子:
layouts/_markup/render-table.html
<table
{{- range $k, $v := .Attributes }}
{{- if $v }}
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
{{- end }}
{{- end }}>
<thead>
{{- range .THead }}
<tr>
{{- range . }}
<th
{{- with .Alignment }}
{{- printf " style=%q" (printf "text-align: %s" .) | safeHTMLAttr }}
{{- end -}}
>
{{- .Text -}}
</th>
{{- end }}
</tr>
{{- end }}
</thead>
<tbody>
{{- range .TBody }}
<tr>
{{- range . }}
<td
{{- with .Alignment }}
{{- printf " style=%q" (printf "text-align: %s" .) | safeHTMLAttr }}
{{- end -}}
>
{{- .Text -}}
</td>
{{- end }}
</tr>
{{- end }}
</tbody>
</table>PageInner 详情
PageInner 的主要用途是相对于包含的 Page 解析链接和 页面资源。例如,创建一个 “include” 短代码,从多个内容文件组合页面,同时保留脚注和目录的全局上下文:
layouts/_shortcodes/include.html
{{ with .Get 0 }}
{{ with $.Page.GetPage . }}
{{- .RenderShortcodes }}
{{ else }}
{{ errorf "短代码 %q 无法找到 %q。参见 %s" $.Name . $.Position }}
{{ end }}
{{ else }}
{{ errorf "短代码 %q 需要一个位置参数来指示要包含的文件的逻辑路径。参见 %s" .Name .Position }}
{{ end }}然后在您的 Markdown 中调用短代码:
content/posts/post-1.md
{{% include "/posts/post-2" %}}在渲染 /posts/post-2 时触发的任何渲染钩子将获得:
- 调用
Page时获得/posts/post-1 - 调用
PageInner时获得/posts/post-2
如果不相关,PageInner 会回退到 Page 的值,并且始终返回一个值。
PageInner 方法仅与调用 RenderShortcodes 方法的短代码相关,并且您必须使用 Markdown 表示法 调用短代码。
作为实际示例,Hugo 的嵌入式链接和图像渲染钩子使用 PageInner 方法来解析 Markdown 链接和图像目标。请参阅各自的源代码: