HUGO
Menu
GitHub 87548 stars Mastodon

Hugo 相關內容

在"另請參閱"部分列出相關內容。

Hugo 使用一組因素根據 front matter 參數識別頁面的相關內容。這可以調整為所需的索引和參數集,或保留為 Hugo 的默認 相關內容配置

列出相關內容

列出最多 5 個相關頁面(共享相同的 datekeyword 參數),只需在模板中包含類似以下的 partial:

layouts/_partials/related.html
{{ with site.RegularPages.Related . | first 5 }}
  <p>相關內容:</p>
  <ul>
    {{ range . }}
      <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
    {{ end }}
  </ul>
{{ end }}

Related 方法接受一個參數,可以是 Page 或選項映射。選項映射有以下選項:

indices
(slice) 要在其中搜索的索引。
document
(page) 要查找相關內容的頁面。指定選項映射時必需。
namedSlices
(slice) 要搜索的關鍵字,使用 keyVals 函數表示為 KeyValues 切片。
fragments
(slice) 特殊關鍵字列表,用於配置為"fragments"類型的索引。這將匹配文檔的 fragment 標識符。

使用上述所有選項的虛構示例:

{{ $page := . }}
{{ $opts := dict
  "indices" (slice "tags" "keywords")
  "document" $page
  "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
  "fragments" (slice "heading-1" "heading-2")
}}

我們在 Hugo 0.111.0 中改進並簡化了此功能。在此之前,我們有 3 種不同的方法:RelatedRelatedToRelatedIndices。現在我們只有一個方法:Related。舊方法仍然可用但已棄用。另請參閱 this blog article 了解此功能更高級用法的詳細說明。

索引內容標題

Hugo 可以索引內容中的標題並使用它來查找相關內容。你可以通過在 related 配置中添加類型為 fragments 的索引來啟用此功能:

related:
  includeNewer: true
  indices:
  - applyFilter: true
    name: fragmentrefs
    type: fragments
    weight: 80
  threshold: 20
  toLower: false
[related]
  includeNewer = true
  threshold = 20
  toLower = false
  [[related.indices]]
    applyFilter = true
    name = 'fragmentrefs'
    type = 'fragments'
    weight = 80
{
   "related": {
      "includeNewer": true,
      "indices": [
         {
            "applyFilter": true,
            "name": "fragmentrefs",
            "type": "fragments",
            "weight": 80
         }
      ],
      "threshold": 20,
      "toLower": false
   }
}
  • name 映射到可選的 front matter slice 屬性,可用於從頁面級別鏈接到 fragment/標題級別。
  • 如果啟用了 applyFilter,結果中每個頁面上的 .HeadingsFiltered 將反映過濾後的標題。如果你想在相關內容列表中顯示標題,這很有用:
{{ $related := .Site.RegularPages.Related . | first 5 }}
{{ with $related }}
  <h2>另請參閱</h2>
  <ul>
    {{ range $i, $p := . }}
      <li>
        <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
        {{ with .HeadingsFiltered }}
          <ul>
            {{ range . }}
              {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
              <li>
                <a href="{{ $link }}">{{ .Title }}</a>
              </li>
            {{ end }}
          </ul>
        {{ end }}
      </li>
    {{ end }}
  </ul>
{{ end }}

配置

請參閱 configure related content


Last updated: January 1, 0001
Improve this page