Fragments
Syntax
Returns
在 URL(無論是絕對還是相對)中,片段 鏈接到頁面上 HTML 元素的 id 屬性。
/articles/article-1#section-2
------------------- ---------
path fragmentHugo 為頁面內容中的每個 Markdown ATX 和 setext 標題分配一個 id 屬性。您可以根據需要使用 Markdown 屬性 覆蓋 id。這在 目錄 (TOC) 中的條目和頁面上的標題之間創建關系。
在 Page 對象上使用 Fragments 方法,通過 Fragments.ToHTML 方法創建目錄,或 遍歷 Fragments.Map 數據結構。
方法
Headings
(slice) 頁面上所有標題的切片,每個標題有第一級鍵。每個映射包含以下鍵:ID、Level、Title 和 Headings。要檢查數據結構:
<pre>{{ debug.Dump .Fragments.Headings }}</pre>HeadingsMap
(map) 頁面上所有標題的嵌套映射。每個映射包含以下鍵:ID、Level、Title 和 Headings。要檢查數據結構:
<pre>{{ debug.Dump .Fragments.HeadingsMap }}</pre>Identifiers
(slice) 包含頁面上每個標題的 id 屬性的切片。如果配置了,還將包含頁面上每個描述術語(即 dt 元素)的 id 屬性。
詳見 配置 Markup。
要檢查數據結構:
<pre>{{ debug.Dump .Fragments.Identifiers }}</pre>Identifiers.Contains ID
(bool) 報告頁面上是否有一個或多個標題具有給定的 id 屬性,這對於驗證 渲染鉤子 中的鏈接片段很有用。
{{ .Fragments.Identifiers.Contains "section-2" }} → trueIdentifiers.Count ID
(int) 頁面上具有給定 id 屬性的標題數量,這對於檢測重復項很有用。
{{ .Fragments.Identifiers.Count "section-2" }} → 1ToHTML
(template.HTML) 返回目錄作為嵌套列表,有序或無序,與 TableOfContents 方法返回的 HTML 相同。此方法接受三個參數:起始級別 (int)、結束級別 (int) 和布爾值(true 返回有序列表,false 返回無序列表)。
當您想要獨立於站點配置中的目錄設置來控制起始級別、結束級別或列表類型時,使用此方法。
{{ $startLevel := 2 }}
{{ $endLevel := 3 }}
{{ $ordered := true }}
{{ .Fragments.ToHTML $startLevel $endLevel $ordered }}Hugo 將其渲染為:
<nav id="TableOfContents">
<ol>
<li><a href="#section-1">Section 1</a>
<ol>
<li><a href="#section-11">Section 1.1</a></li>
<li><a href="#section-12">Section 1.2</a></li>
</ol>
</li>
<li><a href="#section-2">Section 2</a></li>
</ol>
</nav>在渲染鉤子中使用 Fragments 方法是安全的,即使對於當前頁面也是如此。
在短代碼中使用 Fragments 方法時,使用 標准記法 調用短代碼。如果您使用 Markdown 記法,渲染的短代碼將包含在片段映射的創建中,導致循環。