表格渲染钩子
v0.134.0 新增功能
上下文
表格渲染钩子模板接收以下上下文
属性
(map
) Markdown 属性,如果您的站点配置如下,则可用
hugo.
markup:
goldmark:
parser:
attribute:
block: true
[markup]
[markup.goldmark]
[markup.goldmark.parser]
[markup.goldmark.parser.attribute]
block = true
{
"markup": {
"goldmark": {
"parser": {
"attribute": {
"block": true
}
}
}
}
}
序号
(int
) 页面上表格的从零开始的序号。
页面
(page
) 对当前页面的引用。
PageInner
(page
) 通过RenderShortcodes
方法嵌套的页面的引用。查看详情。
位置
(string
) 表格在页面内容中的位置。
THead
(slice
) 表头行的切片,其中每个元素都是表格单元格的切片。
TBody
(slice
) 表格主体行的切片,其中每个元素都是表格单元格的切片。
表格单元格
由 THead
和 TBody
方法返回的切片中的每个表格单元格都具有以下字段
对齐方式
(string
) 表格单元格中文本的对齐方式,为 left
、center
或 right
之一。
文本
(template.HTML
) 表格单元格内的文本。
示例
在其默认配置中,Hugo 根据 GitHub Flavored Markdown 规范渲染 Markdown 表格。要创建执行相同操作的渲染钩子
layouts/_default/_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 详情 v0.125.0 版本新增功能
PageInner
的主要用例是解析相对于包含的 Page
的链接和页面资源。 例如,创建一个“include”短代码,以便从多个内容文件组成页面,同时为脚注和目录保留全局上下文。
layouts/shortcodes/include.html
{{ with .Get 0 }}
{{ with $.Page.GetPage . }}
{{- .RenderShortcodes }}
{{ else }}
{{ errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
{{ end }}
{{ else }}
{{ errorf "The %q shortcode requires a positional parameter indicating the logical path of the file to include. See %s" .Name .Position }}
{{ end }}
然后在你的 Markdown 中调用该短代码
content/posts/p1.md
{{% include "/posts/p2" %}}
在渲染 /posts/p2
时触发的任何渲染钩子都会得到
- 调用
Page
时得到/posts/p1
- 调用
PageInner
时得到/posts/p2
如果 PageInner
不相关,则会回退到 Page
的值,并且始终返回一个值。
一个实际的例子是,Hugo 的嵌入式链接和图像渲染钩子使用 PageInner
方法来解析 Markdown 链接和图像的目标。请参阅每个的源代码