標題渲染 Hook
上下文
標題渲染 Hook 模板會接收到以下 上下文:
Anchor
(string
) 標題元素的 id
屬性。
Attributes
(map
) Markdown 屬性,如果您的網站配置如下,則會提供這些屬性:
hugo.
markup:
goldmark:
parser:
attribute:
title: true
[markup]
[markup.goldmark]
[markup.goldmark.parser]
[markup.goldmark.parser.attribute]
title = true
{
"markup": {
"goldmark": {
"parser": {
"attribute": {
"title": true
}
}
}
}
}
Level
(int
) 標題層級,從 1 到 6。
Page
(page
) 當前頁面的參考。
PageInner
New in v0.125.0(page
) 通過 RenderShortcodes
方法嵌套的頁面參考。查看詳情。
PlainText
(string
) 作為純文字的標題文本。
Text
(template.HTML
) 標題的 HTML 文本。
範例
在預設設定下,Hugo 根據 CommonMark 規範 渲染 Markdown 標題,並自動添加 id
屬性。以下是創建具備相同行為的渲染 Hook 範例:
layouts/_default/_markup/render-heading.html
<h{{ .Level }} id="{{ .Anchor }}">
{{- .Text -}}
</h{{ .Level }}>
要在每個標題右側添加一個錨點連結:
layouts/_default/_markup/render-heading.html
<h{{ .Level }} id="{{ .Anchor }}">
{{ .Text }}
<a href="#{{ .Anchor }}">#</a>
</h{{ .Level }}>
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 中連結和圖片的目標位置。請參考以下來源程式碼: