HUGO
Menu
GitHub 86675 stars Mastodon

Sites

Returns a collection of all sites for all dimensions.

Syntax

SITE.Sites

Returns

page.Sites

Deprecated in v0.156.0

Use hugo.Sites instead.

The returned collection follows a tiered sort based on the dimensions of your project where each dimension is evaluated according to the following priority.

  1. Language sorted by weight in ascending order. If weights are tied or undefined Hugo defaults to lexicographical order.
  2. Role sorted by weight in ascending order. If weights are tied or undefined Hugo defaults to lexicographical order.
  3. Version sorted by weight in ascending order. If weights are tied or undefined Hugo defaults to sorting semantically in descending order.

The logic follows a hierarchical structure where each subsequent dimension acts as a tie-breaker for the one above it.

With this site configuration:

defaultContentLanguage: de
defaultContentLanguageInSubdir: true
defaultContentVersionInSubdir: true
languages:
  de:
    contentDir: content/de
    languageCode: de-DE
    languageDirection: ltr
    languageName: Deutsch
    title: Projekt Dokumentation
    weight: 1
  en:
    contentDir: content/en
    languageCode: en-US
    languageDirection: ltr
    languageName: English
    title: Project Documentation
    weight: 2
versions:
  v1.0.0: {}
  v2.0.0: {}
  v3.0.0: {}
defaultContentLanguage = 'de'
defaultContentLanguageInSubdir = true
defaultContentVersionInSubdir = true
[languages]
  [languages.de]
    contentDir = 'content/de'
    languageCode = 'de-DE'
    languageDirection = 'ltr'
    languageName = 'Deutsch'
    title = 'Projekt Dokumentation'
    weight = 1
  [languages.en]
    contentDir = 'content/en'
    languageCode = 'en-US'
    languageDirection = 'ltr'
    languageName = 'English'
    title = 'Project Documentation'
    weight = 2
[versions]
  [versions.'v1.0.0']
  [versions.'v2.0.0']
  [versions.'v3.0.0']
{
   "defaultContentLanguage": "de",
   "defaultContentLanguageInSubdir": true,
   "defaultContentVersionInSubdir": true,
   "languages": {
      "de": {
         "contentDir": "content/de",
         "languageCode": "de-DE",
         "languageDirection": "ltr",
         "languageName": "Deutsch",
         "title": "Projekt Dokumentation",
         "weight": 1
      },
      "en": {
         "contentDir": "content/en",
         "languageCode": "en-US",
         "languageDirection": "ltr",
         "languageName": "English",
         "title": "Project Documentation",
         "weight": 2
      }
   },
   "versions": {
      "v1.0.0": {},
      "v2.0.0": {},
      "v3.0.0": {}
   }
}

This template:

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

Produces a list of links to each home page:

<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>

To render a link to the home page of the default site:

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

This is equivalent to:

{{ with index .Site.Sites 0 }}
  <a href="{{ .Home.RelPermalink }}">{{ .Title }}</a>
{{ end }}

Last updated: January 1, 0001
Improve this page