summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hugolib/content_map.go4
-rw-r--r--hugolib/page__tree.go4
-rw-r--r--hugolib/taxonomy_test.go27
3 files changed, 35 insertions, 0 deletions
diff --git a/hugolib/content_map.go b/hugolib/content_map.go
index f0b66d859..279c8e43a 100644
--- a/hugolib/content_map.go
+++ b/hugolib/content_map.go
@@ -533,6 +533,7 @@ func (m *contentMap) getPage(section, name string) *contentNode {
func (m *contentMap) getSection(s string) (string, *contentNode) {
k, v, found := m.sections.LongestPrefix(path.Dir(s))
+
if found {
return k, v.(*contentNode)
}
@@ -919,6 +920,9 @@ func (c *contentTreeRef) isSection() bool {
}
func (c *contentTreeRef) getSection() (string, *contentNode) {
+ if c.t == c.m.taxonomies {
+ return c.m.getTaxonomyParent(c.key)
+ }
return c.m.getSection(c.key)
}
diff --git a/hugolib/page__tree.go b/hugolib/page__tree.go
index 776c92166..08fda2289 100644
--- a/hugolib/page__tree.go
+++ b/hugolib/page__tree.go
@@ -121,6 +121,10 @@ func (pt pageTree) Parent() page.Page {
return nil
}
+ if pt.p.Kind() == page.KindTaxonomyTerm {
+ return pt.p.s.home
+ }
+
_, b := p.getTreeRef().getSection()
if b == nil {
return nil
diff --git a/hugolib/taxonomy_test.go b/hugolib/taxonomy_test.go
index 7c0644d51..abe4b97cd 100644
--- a/hugolib/taxonomy_test.go
+++ b/hugolib/taxonomy_test.go
@@ -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>`)
+
+}