mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-18 21:11:19 +02:00
hugolib: Honor implicit "page" type during template selection
Closes #13826
This commit is contained in:
committed by
Bjørn Erik Pedersen
parent
dd6e2c8724
commit
cfc8d315b4
@@ -640,7 +640,7 @@ func (p *Path) Base() string {
|
|||||||
// For pages with Type set, we treat that as the section.
|
// For pages with Type set, we treat that as the section.
|
||||||
func (p *Path) BaseReTyped(typ string) (d string) {
|
func (p *Path) BaseReTyped(typ string) (d string) {
|
||||||
base := p.Base()
|
base := p.Base()
|
||||||
if typ == "" || p.Section() == typ {
|
if p.Section() == typ {
|
||||||
return base
|
return base
|
||||||
}
|
}
|
||||||
d = "/" + typ
|
d = "/" + typ
|
||||||
|
@@ -479,7 +479,7 @@ func (ps *pageState) initCommonProviders(pp pagePaths) error {
|
|||||||
func (po *pageOutput) GetInternalTemplateBasePathAndDescriptor() (string, tplimpl.TemplateDescriptor) {
|
func (po *pageOutput) GetInternalTemplateBasePathAndDescriptor() (string, tplimpl.TemplateDescriptor) {
|
||||||
p := po.p
|
p := po.p
|
||||||
f := po.f
|
f := po.f
|
||||||
base := p.PathInfo().BaseReTyped(p.m.pageConfig.Type)
|
base := p.PathInfo().BaseReTyped(p.m.Type())
|
||||||
return base, tplimpl.TemplateDescriptor{
|
return base, tplimpl.TemplateDescriptor{
|
||||||
Kind: p.Kind(),
|
Kind: p.Kind(),
|
||||||
Lang: p.Language().Lang,
|
Lang: p.Language().Lang,
|
||||||
|
@@ -2000,3 +2000,61 @@ title: home en
|
|||||||
b.AssertLogContains("Using index.de.md in your content's root directory is usually incorrect for your home page. You should use _index.de.md instead.")
|
b.AssertLogContains("Using index.de.md in your content's root directory is usually incorrect for your home page. You should use _index.de.md instead.")
|
||||||
b.AssertLogContains("Using index.en.org in your content's root directory is usually incorrect for your home page. You should use _index.en.org instead.")
|
b.AssertLogContains("Using index.en.org in your content's root directory is usually incorrect for your home page. You should use _index.en.org instead.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue 13826
|
||||||
|
func TestTemplateSelectionIssue13826(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
|
||||||
|
files := `
|
||||||
|
-- hugo.toml --
|
||||||
|
disableKinds = ['home','rss','section','sitemap','taxonomy','term']
|
||||||
|
-- content/p1.md --
|
||||||
|
---
|
||||||
|
title: p1 (type implicitly set to page)
|
||||||
|
---
|
||||||
|
-- content/p2.md --
|
||||||
|
---
|
||||||
|
title: p2 (type explicitly set to page)
|
||||||
|
type: page
|
||||||
|
---
|
||||||
|
-- content/p3.md --
|
||||||
|
---
|
||||||
|
title: p3 (type explicitly set to foo)
|
||||||
|
type: foo
|
||||||
|
---
|
||||||
|
-- content/foo/p4.md --
|
||||||
|
---
|
||||||
|
title: p4 (type implicitly set to foo)
|
||||||
|
---
|
||||||
|
-- content/bar/p5.md --
|
||||||
|
---
|
||||||
|
title: p5 (type explicitly set to foo)
|
||||||
|
type: foo
|
||||||
|
---
|
||||||
|
-- layouts/page/page.html --
|
||||||
|
layouts/page/page.html
|
||||||
|
-- layouts/foo/page.html --
|
||||||
|
layouts/foo/page.html
|
||||||
|
-- layouts/page.html --
|
||||||
|
layouts/page.html
|
||||||
|
`
|
||||||
|
|
||||||
|
b := Test(t, files)
|
||||||
|
|
||||||
|
b.AssertFileContent("public/p1/index.html", "layouts/page/page.html")
|
||||||
|
b.AssertFileContent("public/p2/index.html", "layouts/page/page.html")
|
||||||
|
b.AssertFileContent("public/p3/index.html", "layouts/foo/page.html")
|
||||||
|
b.AssertFileContent("public/foo/p4/index.html", "layouts/foo/page.html")
|
||||||
|
b.AssertFileContent("public/bar/p5/index.html", "layouts/foo/page.html")
|
||||||
|
|
||||||
|
files = strings.ReplaceAll(files, "-- layouts/page/page.html --", "-- delete-me-1.txt --")
|
||||||
|
files = strings.ReplaceAll(files, "-- layouts/foo/page.html --", "-- delete-me-2.txt --")
|
||||||
|
|
||||||
|
b = Test(t, files)
|
||||||
|
|
||||||
|
b.AssertFileContent("public/p1/index.html", "layouts/page.html")
|
||||||
|
b.AssertFileContent("public/p2/index.html", "layouts/page.html")
|
||||||
|
b.AssertFileContent("public/p3/index.html", "layouts/page.html")
|
||||||
|
b.AssertFileContent("public/foo/p4/index.html", "layouts/page.html")
|
||||||
|
b.AssertFileContent("public/bar/p5/index.html", "layouts/page.html")
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user