Heading render hooks
Context
Heading render hook templates receive the following context:
Anchor
(string) The id attribute of the heading element.
Attributes
(map) The Markdown attributes, available if you configure your site as follows:
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) The heading level, 1 through 6.
Page
(page) A reference to the current page.
PageInner
v0.125.0 の新機能(page) A reference to a page nested via the RenderShortcodes method. See details.
PlainText
(string) The heading text as plain text.
Text
(template.HTML) The heading text.
Examples
In its default configuration, Hugo renders Markdown headings according to the CommonMark specification with the addition of automatic id attributes. To create a render hook that does the same thing:
<h{{ .Level }} id="{{ .Anchor }}">
{{- .Text -}}
</h{{ .Level }}>To add an anchor link to the right of each heading:
<h{{ .Level }} id="{{ .Anchor }}">
{{ .Text }}
<a href="#{{ .Anchor }}">#</a>
</h{{ .Level }}>PageInner details
v0.125.0 の新機能The primary use case for PageInner is to resolve links and page resources relative to an included Page. For example, create an “include” shortcode to compose a page from multiple content files, while preserving a global context for footnotes and the table of contents:
{{ with site.GetPage (.Get 0) }}
{{ .RenderShortcodes }}
{{ end }}Then call the shortcode in your Markdown:
{{% include "/posts/p2" %}}Any render hook triggered while rendering /posts/p2 will get:
/posts/p1when callingPage/posts/p2when callingPageInner
PageInner falls back to the value of Page if not relevant, and always returns a value.
As a practical example, Hugo’s embedded link and image render hooks use the PageInner method to resolve markdown link and image destinations. See the source code for each: