tpl: Fix issue with partials without suffix

Fixes #13601
This commit is contained in:
Bjørn Erik Pedersen 2025-04-14 12:00:14 +02:00
parent 71925b27c7
commit e84962e5e6
No known key found for this signature in database
2 changed files with 28 additions and 1 deletions

View file

@ -279,3 +279,23 @@ P1.
b.Assert(err, qt.IsNotNil) b.Assert(err, qt.IsNotNil)
b.Assert(err.Error(), qt.Contains, "wrong number of args for string: want 1 got 0") b.Assert(err.Error(), qt.Contains, "wrong number of args for string: want 1 got 0")
} }
func TestPartialWithoutSuffixIssue13601(t *testing.T) {
t.Parallel()
files := `
-- hugo.toml --
-- layouts/home.html --
P1: {{ partial "p1" . }}
P2: {{ partial "p2" . }}
-- layouts/_partials/p1 --
P1.
-- layouts/_partials/p2 --
P2.
{{ return "foo bar" }}
`
b := hugolib.Test(t, files)
b.AssertFileContent("public/index.html", "P1: P1.\nP2: foo bar")
}

View file

@ -913,7 +913,7 @@ func (s *TemplateStore) extractInlinePartials() error {
name := templ.Name() name := templ.Name()
if !paths.HasExt(name) { if !paths.HasExt(name) {
// Assume HTML. This in line with how the lookup works. // Assume HTML. This in line with how the lookup works.
name = name + ".html" name = name + s.htmlFormat.MediaType.FirstSuffix.FullSuffix
} }
if !strings.HasPrefix(name, "_") { if !strings.HasPrefix(name, "_") {
name = "_" + name name = "_" + name
@ -1092,6 +1092,12 @@ func (s *TemplateStore) insertTemplate2(
panic("category not set") panic("category not set")
} }
if category == CategoryPartial && d.OutputFormat == "" && d.MediaType == "" {
// See issue #13601.
d.OutputFormat = s.htmlFormat.Name
d.MediaType = s.htmlFormat.MediaType.Type
}
m := tree.Get(key) m := tree.Get(key)
nk := nodeKey{c: category, d: d} nk := nodeKey{c: category, d: d}
@ -1719,6 +1725,7 @@ func (s *TemplateStore) transformTemplates() error {
continue continue
} }
if !vv.noBaseOf { if !vv.noBaseOf {
// TODO(bep) I don't think this branch is ever called.
for vvv := range vv.BaseVariantsSeq() { for vvv := range vv.BaseVariantsSeq() {
tctx, err := applyTemplateTransformers(vvv.Template, lookup) tctx, err := applyTemplateTransformers(vvv.Template, lookup)
if err != nil { if err != nil {