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 ...

如果這是您確實想要的,可以關閉此警告。