引用塊渲染鉤子
上下文
引用塊_渲染鉤子_ 模板接收以下 上下文:
- AlertType
- (
string) 當Type為alert時適用,這是轉換為小寫的警報類型。請參閱下面的 警報 部分。 - AlertTitle
- New in v0.134.0
- (
template.HTML) 當Type為alert時適用,這是警報名稱。請參閱下面的 警報 部分。 - AlertSign
- New in v0.134.0
- (
string) 當Type為alert時適用,這是警報符號。通常用於指示警報是否可在圖形上折疊,這是+、-或空字符串之一。請參閱下面的 警報 部分。 - Attributes
- (
map) Markdown 屬性,如果您的站點配置如下則可用:markup: goldmark: parser: attribute: block: true[markup] [markup.goldmark] [markup.goldmark.parser] [markup.goldmark.parser.attribute] block = true{ "markup": { "goldmark": { "parser": { "attribute": { "block": true } } } } } - Ordinal
- (
int) 頁面上引用塊的從零開始的序號。 - Page
- (
page) 對當前頁面的引用。 - PageInner
- (
page) 對通過RenderShortcodes方法嵌套的頁面的引用。詳見。 - Position
- (
string) 引用塊在頁面內容中的位置。 - Text
- (
template.HTML) 引用塊文本,如果Type為alert則不包括第一行。請參閱下面的 警報 部分。 - Type
- (
string) 引用塊類型。如果引用塊具有警報指示符則返回alert,否則返回regular。請參閱下面的 警報 部分。
示例
在默認配置中,Hugo 根據 CommonMark 規范 渲染 Markdown 引用塊。要創建執行相同操作的渲染鉤子:
<blockquote>
{{ .Text }}
</blockquote>要將引用塊渲染為帶有可選引用和標題的 HTML figure 元素:
<figure>
<blockquote {{ with .Attributes.cite }}cite="{{ . }}"{{ end }}>
{{ .Text }}
</blockquote>
{{ with .Attributes.caption }}
<figcaption class="blockquote-caption">
{{ . | safeHTML }}
</figcaption>
{{ end }}
</figure>然後在您的 Markdown 中:
> Some text
{cite="https://www.hugodoc.com" caption="Some caption"}警報
警報也稱為 callouts 或 admonitions,是用於強調關鍵信息的引用塊。
基本語法
使用基本 Markdown 語法,每行警報的第一行是警報指示符,由感嘆號後跟警報類型組成,並用括號包裹。例如:
> [!NOTE]
> 用戶在瀏覽內容時應該了解的有用信息。
> [!TIP]
> 幫助更好地或更輕松地完成事情的建議。
> [!IMPORTANT]
> 用戶實現目標需要了解的關鍵信息。
> [!WARNING]
> 需要用戶立即注意以避免問題的緊急信息。
> [!CAUTION]
> 關於某些行動的風險或負面結果的警告。基本語法與 GitHub、Obsidian 和 Typora 兼容。
擴展語法
使用擴展 Markdown 語法,您可以選擇包含警報符號和/或警報名稱。警報符號是 + 或 - 之一,通常用於指示警報是否可在圖形上折疊。例如:
> [!WARNING]+ 輻射危險
> 請勿在沒有防護裝備的情況下靠近或處理。擴展語法與 Obsidian 兼容。
擴展語法與 GitHub 或 Typora 不兼容。如果您包含警報符號或警報名稱,這些應用程序會將 Markdown 渲染為引用塊。
示例
如果存在警報指示符,此引用塊渲染鉤子會渲染多語言警報,否則根據 CommonMark 規范渲染引用塊。
{{ $emojis := dict
"caution" ":exclamation:"
"important" ":information_source:"
"note" ":information_source:"
"tip" ":bulb:"
"warning" ":information_source:"
}}
{{ if eq .Type "alert" }}
<blockquote class="alert alert-{{ .AlertType }}">
<p class="alert-heading">
{{ transform.Emojify (index $emojis .AlertType) }}
{{ with .AlertTitle }}
{{ . }}
{{ else }}
{{ or (i18n .AlertType) (title .AlertType) }}
{{ end }}
</p>
{{ .Text }}
</blockquote>
{{ else }}
<blockquote>
{{ .Text }}
</blockquote>
{{ end }}要覆蓋標簽,請在您的 i18n 文件中創建這些條目:
caution: 警告
important: 重要
note: 注意
tip: 提示
warning: 警告
caution = '警告'
important = '重要'
note = '注意'
tip = '提示'
warning = '警告'
{
"caution": "警告",
"important": "重要",
"note": "注意",
"tip": "提示",
"warning": "警告"
}
雖然您可以使用一個帶有條件邏輯的模板(如上所示),但您也可以為每種 Type 的引用塊創建單獨的模板:
layouts/
└── _markup/
├── render-blockquote-alert.html
└── render-blockquote-regular.htmlPageInner 詳情
PageInner 的主要用途是相對於包含的 Page 解析鏈接和 頁面資源。例如,創建一個 “include” 短代碼,從多個內容文件組合頁面,同時保留腳注和目錄的全局上下文:
{{ with .Get 0 }}
{{ with $.Page.GetPage . }}
{{- .RenderShortcodes }}
{{ else }}
{{ errorf "短代碼 %q 無法找到 %q。參見 %s" $.Name . $.Position }}
{{ end }}
{{ else }}
{{ errorf "短代碼 %q 需要一個位置參數來指示要包含的文件的邏輯路徑。參見 %s" .Name .Position }}
{{ end }}然後在您的 Markdown 中調用短代碼:
{{% include "/posts/post-2" %}}在渲染 /posts/post-2 時觸發的任何渲染鉤子將獲得:
- 調用
Page時獲得/posts/post-1 - 調用
PageInner時獲得/posts/post-2
如果不相關,PageInner 會回退到 Page 的值,並且始終返回一個值。
PageInner 方法僅與調用 RenderShortcodes 方法的短代碼相關,並且您必須使用 Markdown 表示法 調用短代碼。
作為實際示例,Hugo 的嵌入式鏈接和圖像渲染鉤子使用 PageInner 方法來解析 Markdown 鏈接和圖像目標。請參閱各自的源代碼: