RenderShortcodes
RenderShortcodes
方法允許您在短代碼模板中將頁面組合來自多個內容文件,同時保留全局上下文(如腳註和目錄)。
例如,您可以在 layouts/shortcodes/include.html
模板文件中這樣寫:
{{ with site.GetPage (.Get 0) }}
{{ .RenderShortcodes }}
{{ end }}
然後,在您的 Markdown 中調用該短代碼:
{{% include "/snippets/services" %}}
{{% include "/snippets/values" %}}
{{% include "/snippets/leadership" %}}
每個包含的 Markdown 文件都可以包含對其他短代碼的調用。
短代碼語法
在上面的範例中,理解調用短代碼時使用的兩個分隔符的區別非常重要:
{{< myshortcode >}}
表示渲染的短代碼不需要進一步處理。例如,短代碼內容為 HTML。{{% myshortcode %}}
表示渲染的短代碼需要進一步處理。例如,短代碼內容為 Markdown。
對於上述的 “include” 短代碼,應使用第二種語法。
進一步說明
為了理解 RenderShortcodes
方法返回的內容,請考慮以下內容文件:
+++
title = 'About'
date = 2023-10-07T12:28:33-07:00
+++
{{< ref "privacy" >}}
An *emphasized* word.
使用以下模板代碼:
{{ $p := site.GetPage "/about" }}
{{ $p.RenderShortcodes }}
Hugo 渲染結果如下:
https://example.org/privacy/
An *emphasized* word.
注意,內容文件中的短代碼已被渲染,但周圍的 Markdown 仍然保留。
限制
.RenderShortcodes
的主要用途是包含 Markdown 內容。如果您嘗試在 Markdown 中的 HTML
塊內使用 .RenderShortcodes
,您將收到如下警告:
WARN .RenderShortcodes detected inside HTML block in "/content/mypost.md"; this may not be what you intended ...
如果這是您確實想要的,可以關閉此警告。