diff --git a/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go b/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go index 64ee70397..e1d562d4d 100644 --- a/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go +++ b/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go @@ -653,6 +653,34 @@ Footer: {{ range index site.Menus.footer }}{{ .Name }}|{{ end }}| ) } +// Issue 13384. +func TestPagesFromGoTmplMenusMap(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +disableKinds = ['rss','section','sitemap','taxonomy','term'] +-- content/_content.gotmpl -- +{{ $menu1 := dict + "parent" "main-page" + "identifier" "id1" +}} +{{ $menu2 := dict + "parent" "main-page" + "identifier" "id2" +}} +{{ $menus := dict "m1" $menu1 "m2" $menu2 }} +{{ .AddPage (dict "path" "p1" "title" "p1" "menus" $menus ) }} + +-- layouts/index.html -- +Menus: {{ range $k, $v := site.Menus }}{{ $k }}|{{ end }} + +` + b := hugolib.Test(t, files) + + b.AssertFileContent("public/index.html", "Menus: m1|m2|") +} + func TestPagesFromGoTmplMore(t *testing.T) { t.Parallel() diff --git a/resources/page/pagemeta/page_frontmatter.go b/resources/page/pagemeta/page_frontmatter.go index 60ba0e00a..c26662fc2 100644 --- a/resources/page/pagemeta/page_frontmatter.go +++ b/resources/page/pagemeta/page_frontmatter.go @@ -105,7 +105,7 @@ type PageConfig struct { Cascade []map[string]any Sitemap config.SitemapConfig Build BuildConfig - Menus []string + Menus any // Can be a string, []string or map[string]any. // User defined params. Params maps.Params