Fix taxonomy

Recently introduced in master.

See https://github.com/gohugoio/hugo/issues/6897#issuecomment-587499907
This commit is contained in:
Bjørn Erik Pedersen 2020-02-18 16:16:09 +01:00
parent 19e12caf8c
commit 1b7acfe763
No known key found for this signature in database
GPG key ID: 330E6E2BD4859D8F
3 changed files with 35 additions and 0 deletions

View file

@ -533,6 +533,7 @@ func (m *contentMap) getPage(section, name string) *contentNode {
func (m *contentMap) getSection(s string) (string, *contentNode) { func (m *contentMap) getSection(s string) (string, *contentNode) {
k, v, found := m.sections.LongestPrefix(path.Dir(s)) k, v, found := m.sections.LongestPrefix(path.Dir(s))
if found { if found {
return k, v.(*contentNode) return k, v.(*contentNode)
} }
@ -919,6 +920,9 @@ func (c *contentTreeRef) isSection() bool {
} }
func (c *contentTreeRef) getSection() (string, *contentNode) { func (c *contentTreeRef) getSection() (string, *contentNode) {
if c.t == c.m.taxonomies {
return c.m.getTaxonomyParent(c.key)
}
return c.m.getSection(c.key) return c.m.getSection(c.key)
} }

View file

@ -121,6 +121,10 @@ func (pt pageTree) Parent() page.Page {
return nil return nil
} }
if pt.p.Kind() == page.KindTaxonomyTerm {
return pt.p.s.home
}
_, b := p.getTreeRef().getSection() _, b := p.getTreeRef().getSection()
if b == nil { if b == nil {
return nil return nil

View file

@ -537,3 +537,30 @@ categories.funny:|/blog/p1/|
`) `)
} }
func TestTaxonomiesParent(t *testing.T) {
t.Parallel()
b := newTestSitesBuilder(t)
b.WithContent("p.md", `---
title: "Page"
categories: ["funny"]
---
`)
b.Build(BuildCfg{})
cat := b.GetPage("categories")
funny := b.GetPage("categories/funny")
b.Assert(cat, qt.Not(qt.IsNil))
b.Assert(funny, qt.Not(qt.IsNil))
b.Assert(cat.Parent().IsHome(), qt.Equals, true)
b.Assert(funny.Parent(), qt.Equals, cat)
b.AssertFileContent("public/categories/funny/index.xml", `<link>http://example.com/p/</link>`)
// TODO https://github.com/gohugoio/hugo/issues/6909 b.AssertFileContent("public/categories/index.xml", `<link>http://example.com/categories/funny/</link>`)
}