Fix menuItem.URL when pageRef is not set

Fixes #11062
This commit is contained in:
Bjørn Erik Pedersen 2023-06-02 07:59:50 +02:00
parent a191b38ac8
commit 5e5ce00d41
2 changed files with 35 additions and 1 deletions

View file

@ -621,3 +621,35 @@ Menu Item: 0: <span>Home</span>|/|
`) `)
} }
// Issue #11062
func TestMenusSubDirInBaseURL(t *testing.T) {
t.Parallel()
files := `
-- hugo.toml --
baseURL = "https://example.com/foo/"
title = "Hugo Menu Test"
[menus]
[[menus.main]]
name = "Posts"
url = "/posts"
weight = 1
-- layouts/index.html --
{{ range $i, $e := site.Menus.main }}
Menu Item: {{ $i }}|{{ .URL }}|
{{ end }}
`
b := NewIntegrationTestBuilder(
IntegrationTestConfig{
T: t,
TxtarString: files,
},
).Build()
b.AssertFileContent("public/index.html", `
Menu Item: 0|/foo/posts|
`)
}

View file

@ -789,8 +789,10 @@ func (s *Site) assembleMenus() {
navigation.SetPageValues(me, p) navigation.SetPageValues(me, p)
} }
} }
}
} else { // If page is still nill, we must make sure that we have a URL that considers baseURL etc.
if types.IsNil(me.Page) {
me.ConfiguredURL = s.createNodeMenuEntryURL(me.MenuConfig.URL) me.ConfiguredURL = s.createNodeMenuEntryURL(me.MenuConfig.URL)
} }