渲染 HOOK

標題渲染 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.0

PageInner 的主要用途是解析相對於包含的 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 中連結和圖片的目標位置。請參考以下來源程式碼: