Fix recently introduced partial rendering bug

Fixes #14433
This commit is contained in:
Bjørn Erik Pedersen
2026-01-26 21:38:50 +01:00
parent 9a6bfe2667
commit 8dfcece805
2 changed files with 33 additions and 1 deletions
+28
View File
@@ -160,3 +160,31 @@ title: p10
variant = `{{ template "_internal/pagination.html" (dict "page" . "format" "terse") }}`
test(variant, expectedOutputTerseFormat)
}
func TestOpengraphPartialIssue14433(t *testing.T) {
t.Parallel()
files := `
-- hugo.toml --
baseURL = "https://example.org"
-- content/_index.md --
---
title: Home
---
-- layouts/home.html --
<!DOCTYPE html>
<html lang="en">
<head>
{{- partial "opengraph.html" . }}
</head>
<body>
</body>
</html>
`
b := Test(t, files)
b.AssertFileContent("public/index.html",
`<meta property="og:title" content="Home">`,
`! false`,
)
}
+5 -1
View File
@@ -100,7 +100,7 @@ func (ns *Namespace) _PushPartialDecorator(ctx context.Context, id string) (any,
}
// For internal use only.
func (ns *Namespace) _PopPartialDecorator(ctx context.Context, id string) bool {
func (ns *Namespace) _PopPartialDecorator(ctx context.Context, id string) any {
stack := tpl.Context.PartialDecoratorIDStack.Get(ctx)
if stack == nil || stack.Len() == 0 {
panic("decorator stack is nil or empty")
@@ -111,6 +111,10 @@ func (ns *Namespace) _PopPartialDecorator(ctx context.Context, id string) bool {
if !ok || top.Str != id {
panic("partial decorator ID mismatch")
}
if !top.Bool {
// Prevents anything being rendered if inner was not called.
return ""
}
return top.Bool // return whether inner exists in the wrapped partial.
}