hugo

hugo.Sites

返回所有维度上全部站点的集合。

签名
hugo.Sites
返回类型
page.Sites

(0.156.0 新增)

排序

返回的集合按层级排序,后一个维度用于打破前一个维度的并列:

  1. 先按语言(Language)的 weight 升序排序;如果 weight 相同或未定义,则退回字典序。
  2. 再按版本(Version)的 weight 升序排序;并列时 Hugo 默认按语义化版本降序排列。
  3. 最后按角色(Role)的 weight 升序排序;仍并列时用字典序作为最终回退。

用法

使用以下项目配置:

defaultContentLanguage = 'en'
defaultContentLanguageInSubdir = true
defaultContentVersionInSubdir = true

[languages.de]
contentDir = 'content/de'
direction = 'ltr'
label = 'Deutsch'
locale = 'de-DE'
title = 'Projekt Dokumentation'
weight = 1

[languages.en]
contentDir = 'content/en'
direction = 'ltr'
label = 'English'
locale = 'en-US'
title = 'Project Documentation'
weight = 2

[versions.'v1.0.0']
[versions.'v2.0.0']
[versions.'v3.0.0']

这个模板:

<ul>
  {{ range hugo.Sites }}
    <li><a href="{{ .Home.RelPermalink }}">{{ .Title }} {{ .Version.Name }}</a></li>
  {{ end }}
</ul>

会生成一串指向各站点首页的链接:

<ul>
  <li><a href="/v3.0.0/de/">Projekt Dokumentation v3.0.0</a></li>
  <li><a href="/v2.0.0/de/">Projekt Dokumentation v2.0.0</a></li>
  <li><a href="/v1.0.0/de/">Projekt Dokumentation v1.0.0</a></li>
  <li><a href="/v3.0.0/en/">Project Documentation v3.0.0</a></li>
  <li><a href="/v2.0.0/en/">Project Documentation v2.0.0</a></li>
  <li><a href="/v1.0.0/en/">Project Documentation v1.0.0</a></li>
</ul>

渲染指向默认站点首页的链接:

{{ with hugo.Sites.Default }}
  <a href="{{ .Home.RelPermalink }}">{{ .Title }}</a>
{{ end }}

使用上面的配置时,这会渲染指向英语版 v3.0.0 站点首页的链接。默认站点是使用默认语言、默认版本与默认角色的那个站点,与它在集合中的位置无关。在这个例子里,三个德语站点因为语言 weight 较小而排在前面,但根据 defaultContentLanguage 配置,英语才是默认语言。