]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix sectionPagesMenu for pages in root level
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 5 Apr 2024 10:00:38 +0000 (12:00 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 5 Apr 2024 15:38:08 +0000 (17:38 +0200)
Fixes #12306

hugolib/menu_test.go
hugolib/site.go

index 8ff74304b0d8d6d1deeef8895daf67ec9857cd97..816ffb6763aa0aba7264f40273570deb70db320d 100644 (file)
@@ -636,3 +636,43 @@ Menu Item: {{ $i }}|{{ .URL }}|
 Menu Item: 0|/foo/posts|
 `)
 }
+
+func TestSectionPagesMenuMultilingualWarningIssue12306(t *testing.T) {
+       t.Parallel()
+
+       files := `
+-- hugo.toml --
+disableKinds = ['section','rss','sitemap','taxonomy','term']
+defaultContentLanguageInSubdir = true
+sectionPagesMenu = "main"
+[languages.en]
+[languages.fr]
+-- layouts/_default/home.html --
+{{- range site.Menus.main -}}
+  <a href="{{ .URL }}">{{ .Name }}</a>
+{{- end -}}
+-- layouts/_default/single.html --
+{{ .Title }}
+-- content/p1.en.md --
+---
+title: p1
+menu: main
+---
+-- content/p1.fr.md --
+---
+title: p1
+menu: main
+---
+-- content/p2.en.md --
+---
+title: p2
+menu: main
+---
+`
+
+       b := Test(t, files, TestOptWarn())
+
+       b.AssertFileContent("public/en/index.html", `<a href="/en/p1/">p1</a><a href="/en/p2/">p2</a>`)
+       b.AssertFileContent("public/fr/index.html", `<a href="/fr/p1/">p1</a>`)
+       b.AssertLogNotContains("WARN")
+}
index 6d2d6c852813dce4170887fce99b82e4c45755cf..9ab361722c94629689b9b7fb566d2917c0b0c669 100644 (file)
@@ -658,8 +658,13 @@ func (s *Site) assembleMenus() error {
                        if p.IsHome() || !p.m.shouldBeCheckedForMenuDefinitions() {
                                return false, nil
                        }
+
                        // The section pages menus are attached to the top level section.
                        id := p.Section()
+                       if id == "" {
+                               id = "/"
+                       }
+
                        if _, ok := flat[twoD{sectionPagesMenu, id}]; ok {
                                return false, nil
                        }
@@ -671,6 +676,7 @@ func (s *Site) assembleMenus() error {
                                },
                                Page: p,
                        }
+
                        navigation.SetPageValues(&me, p)
                        flat[twoD{sectionPagesMenu, me.KeyName()}] = &me
                        return false, nil
@@ -678,6 +684,7 @@ func (s *Site) assembleMenus() error {
                        return err
                }
        }
+
        // Add menu entries provided by pages
        if err := s.pageMap.forEachPage(pagePredicates.ShouldListGlobal, func(p *pageState) (bool, error) {
                for name, me := range p.pageMenus.menus() {