diff --git a/hugolib/menu_test.go b/hugolib/menu_test.go index 8ff74304b..816ffb676 100644 --- a/hugolib/menu_test.go +++ b/hugolib/menu_test.go @@ -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 -}} + {{ .Name }} +{{- 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", `p1p2`) + b.AssertFileContent("public/fr/index.html", `p1`) + b.AssertLogNotContains("WARN") +} diff --git a/hugolib/site.go b/hugolib/site.go index 6d2d6c852..9ab361722 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -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() {