]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
hugolib: Adjust hugo.Sites.Default
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 17 Feb 2026 11:45:15 +0000 (12:45 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 17 Feb 2026 18:10:47 +0000 (19:10 +0100)
Fixes #14531

hugolib/site_sites_test.go
resources/page/site.go

index 9f18263193dcf8ac4adc730c2129908914011802..cc5945715a07e4054f35dea348d5aa29ea3fa6e9 100644 (file)
@@ -21,6 +21,7 @@ func TestSiteIsDefault(t *testing.T) {
 disableKinds = ['rss','sitemap','taxonomy','term']
 defaultContentLanguage = 'fr'
 defaultContentLanguageInSubdir = true
+defaultContentVersion = "v2.0.0"
 defaultContentVersionInSubdir = true
 defaultContentRoleInSubdir = true
 [languages]
@@ -57,28 +58,68 @@ title: Page 1 DE
 ---
 -- layouts/_default/single.html --
 Current site is default: {{ .Site.IsDefault }}
-{{ range hugo.Sites }}
+{{ with hugo.Sites.Default }}
+Default site: {{ .Language.Name }}-{{ .Role.Name }}-{{ .Version.Name }}: IsDefault={{ .IsDefault }}
+{{ end }}
+{{ range hugo.Sites -}}
 {{ .Language.Name }}-{{ .Role.Name }}-{{ .Version.Name }}: IsDefault={{ .IsDefault }}
 {{ end }}
 `
 
        b := Test(t, files)
-       b.AssertFileContent("public/guest/v1.0.0/en/p1/index.html",
-               "Current site is default: false",
-               "en-guest-v1.0.0: IsDefault=false",
-               "en-member-v1.0.0: IsDefault=false",
-               "fr-guest-v1.0.0: IsDefault=true",
-               "fr-member-v1.0.0: IsDefault=false",
-               "de-guest-v1.0.0: IsDefault=false",
-               "de-member-v1.0.0: IsDefault=false",
+       b.AssertFileContent("public/guest/v2.0.0/en/p1/index.html",
+               `
+Current site is default: false
+Default site: fr-guest-v2.0.0: IsDefault=true
+en-guest-v1.0.0: IsDefault=false
+en-member-v1.0.0: IsDefault=false
+en-guest-v2.0.0: IsDefault=false
+en-member-v2.0.0: IsDefault=false
+fr-guest-v1.0.0: IsDefault=false
+fr-member-v1.0.0: IsDefault=false
+fr-guest-v2.0.0: IsDefault=true
+fr-member-v2.0.0: IsDefault=false
+de-guest-v1.0.0: IsDefault=false
+de-member-v1.0.0: IsDefault=false
+de-guest-v2.0.0: IsDefault=false
+de-member-v2.0.0: IsDefault=false              
+`,
        )
-       b.AssertFileContent("public/guest/v1.0.0/fr/p1/index.html",
-               "Current site is default: true",
-               "fr-guest-v1.0.0: IsDefault=true",
+       b.AssertFileContent("public/guest/v2.0.0/fr/p1/index.html",
+               `
+Current site is default: true
+Default site: fr-guest-v2.0.0: IsDefault=true
+en-guest-v1.0.0: IsDefault=false
+en-member-v1.0.0: IsDefault=false
+en-guest-v2.0.0: IsDefault=false
+en-member-v2.0.0: IsDefault=false
+fr-guest-v1.0.0: IsDefault=false
+fr-member-v1.0.0: IsDefault=false
+fr-guest-v2.0.0: IsDefault=true
+fr-member-v2.0.0: IsDefault=false
+de-guest-v1.0.0: IsDefault=false
+de-member-v1.0.0: IsDefault=false
+de-guest-v2.0.0: IsDefault=false
+de-member-v2.0.0: IsDefault=false
+`,
        )
-       b.AssertFileContent("public/guest/v1.0.0/de/p1/index.html",
-               "Current site is default: false",
-               "fr-guest-v1.0.0: IsDefault=true",
+       b.AssertFileContent("public/guest/v2.0.0/de/p1/index.html",
+               `
+Current site is default: false
+Default site: fr-guest-v2.0.0: IsDefault=true
+en-guest-v1.0.0: IsDefault=false
+en-member-v1.0.0: IsDefault=false
+en-guest-v2.0.0: IsDefault=false
+en-member-v2.0.0: IsDefault=false
+fr-guest-v1.0.0: IsDefault=false
+fr-member-v1.0.0: IsDefault=false
+fr-guest-v2.0.0: IsDefault=true
+fr-member-v2.0.0: IsDefault=false
+de-guest-v1.0.0: IsDefault=false
+de-member-v1.0.0: IsDefault=false
+de-guest-v2.0.0: IsDefault=false
+de-member-v2.0.0: IsDefault=false
+`,
        )
 }
 
index a63e5eaa04f5b2e5904f77a670aa9d5f228fa940..363c38cd12a691a55b2ce8e276d618b19e05f5fd 100644 (file)
@@ -14,6 +14,7 @@
 package page
 
 import (
+       "slices"
        "time"
 
        "github.com/gohugoio/hugo/common/hmaps"
@@ -142,18 +143,14 @@ type SiteDimension interface {
 // Sites represents an ordered list of sites (languages).
 type Sites []Site
 
-// Default is a convenience method to get the site corresponding to the default
-// content language.
+// Default is a convenience method to get the default site.
 func (s Sites) Default() Site {
-       if len(s) == 0 {
-               return nil
+       if idx := slices.IndexFunc(s, func(ss Site) bool {
+               return ss.IsDefault()
+       }); idx != -1 {
+               return s[idx]
        }
-       for _, site := range s {
-               if site.Language().IsDefault() {
-                       return site
-               }
-       }
-       return s[0]
+       return nil
 }
 
 // Some additional interfaces implemented by siteWrapper that's not on Site.