diff --git a/tpl/tplimpl/templatedescriptor.go b/tpl/tplimpl/templatedescriptor.go index ca73c9f78..8b50605ac 100644 --- a/tpl/tplimpl/templatedescriptor.go +++ b/tpl/tplimpl/templatedescriptor.go @@ -94,14 +94,10 @@ func (this TemplateDescriptor) doCompare(category Category, isEmbedded bool, oth } if other.LayoutFromTemplate != "" && other.LayoutFromTemplate != layoutAll { - if this.LayoutFromUser == "" { + if this.LayoutFromUser == "" || this.LayoutFromUser != other.LayoutFromTemplate { if other.LayoutFromTemplate != this.LayoutFromTemplate { return w } - } else if isLayoutStandard(this.LayoutFromUser) { - if other.LayoutFromTemplate != this.LayoutFromUser { - return w - } } } diff --git a/tpl/tplimpl/templatestore_integration_test.go b/tpl/tplimpl/templatestore_integration_test.go index 375813c31..51b28754f 100644 --- a/tpl/tplimpl/templatestore_integration_test.go +++ b/tpl/tplimpl/templatestore_integration_test.go @@ -1245,3 +1245,28 @@ p: {{ partial "p.html" . }} b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, "error calling partial: maximum template call stack size exceeded") } + +func TestIssue13630(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +disableKinds = ['rss','sitemap'] +-- content/p1.md -- +--- +title: p1 +layout: foo +--- +-- layouts/list.html -- +layouts/list.html +-- layouts/taxononmy.html.html -- +layouts/taxononmy.html.html +` + + var b *hugolib.IntegrationTestBuilder + + for range 3 { + b = hugolib.Test(t, files) + b.AssertFileExists("public/p1/index.html", false) + } +}