Table render hooks
New in v0.134.0
上下文
表格渲染 Hook 模板會接收以下 上下文:
Attributes
(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
}
}
}
}
}
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 表格。若要創建一個實現相同功能的渲染 Hook:
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 詳細資訊
New in v0.125.0PageInner
的主要用途是解析相對於包含的 Page
的連結和 頁面資源。例如,建立一個「include」掛載程式碼,從多個內容檔案組合成一個頁面,同時保留註腳和目錄的全域上下文:
layouts/shortcodes/include.html
{{ with site.GetPage (.Get 0) }}
{{ .RenderShortcodes }}
{{ end }}
然後在您的 Markdown 中呼叫此掛載程式碼:
content/posts/p1.md
{{% include "/posts/p2" %}}
在渲染 /posts/p2
時觸發的任何渲染掛載將獲得:
/posts/p1
當呼叫Page
/posts/p2
當呼叫PageInner
如果不相關,PageInner
將回退到 Page
的值,並始終返回一個值。
作為一個實際範例,Hugo 的內嵌連結和圖片渲染掛載使用 PageInner
方法解析 Markdown 中連結和圖片的目標位置。請參考以下來源程式碼: