shithub: hugo

Download patch

ref: 1b7acfe7634a5d7bbc597ef4dddf4babce5666c5
parent: 19e12caf8c90516e3b803ae8a40b907bd89dc96c
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Tue Feb 18 11:16:09 EST 2020

Fix taxonomy

Recently introduced in master.

See https://github.com/gohugoio/hugo/issues/6897#issuecomment-587499907

--- a/hugolib/content_map.go
+++ b/hugolib/content_map.go
@@ -533,6 +533,7 @@
 
 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) getSection() (string, *contentNode) {
+	if c.t == c.m.taxonomies {
+		return c.m.getTaxonomyParent(c.key)
+	}
 	return c.m.getSection(c.key)
 }
 
--- a/hugolib/page__tree.go
+++ b/hugolib/page__tree.go
@@ -121,6 +121,10 @@
 		return nil
 	}
 
+	if pt.p.Kind() == page.KindTaxonomyTerm {
+		return pt.p.s.home
+	}
+
 	_, b := p.getTreeRef().getSection()
 	if b == nil {
 		return nil
--- a/hugolib/taxonomy_test.go
+++ b/hugolib/taxonomy_test.go
@@ -537,3 +537,30 @@
 `)
 
 }
+
+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>`)
+
+}