HUGO
Menu
GitHub 87548 stars Mastodon

Fragments

返回給定頁面中片段的數據結構。

Syntax

PAGE.Fragments

Returns

tableofcontents.Fragments

在 URL(無論是絕對還是相對)中,片段 鏈接到頁面上 HTML 元素的 id 屬性。

/articles/article-1#section-2
------------------- ---------
       path         fragment

Hugo 為頁面內容中的每個 Markdown ATXsetext 標題分配一個 id 屬性。您可以根據需要使用 Markdown 屬性 覆蓋 id。這在 目錄 (TOC) 中的條目和頁面上的標題之間創建關系。

Page 對象上使用 Fragments 方法,通過 Fragments.ToHTML 方法創建目錄,或 遍歷 Fragments.Map 數據結構。

方法

Headings

(slice) 頁面上所有標題的切片,每個標題有第一級鍵。每個映射包含以下鍵:IDLevelTitleHeadings。要檢查數據結構:

<pre>{{ debug.Dump .Fragments.Headings }}</pre>

HeadingsMap

(map) 頁面上所有標題的嵌套映射。每個映射包含以下鍵:IDLevelTitleHeadings。要檢查數據結構:

<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" }} → true

Identifiers.Count ID

(int) 頁面上具有給定 id 屬性的標題數量,這對於檢測重復項很有用。

{{ .Fragments.Identifiers.Count "section-2" }} → 1

ToHTML

(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 記法,渲染的短代碼將包含在片段映射的創建中,導致循環。


Last updated: January 1, 0001
Improve this page