Hugo 相關內容
在"另請參閱"部分列出相關內容。
Hugo 使用一組因素根據 front matter 參數識別頁面的相關內容。這可以調整為所需的索引和參數集,或保留為 Hugo 的默認 相關內容配置。
列出相關內容
列出最多 5 個相關頁面(共享相同的 date 或 keyword 參數),只需在模板中包含類似以下的 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 種不同的方法:Related、RelatedTo 和 RelatedIndices。現在我們只有一個方法: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 }}