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