diff options
Diffstat (limited to 'hugolib/site.go')
-rw-r--r-- | hugolib/site.go | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/hugolib/site.go b/hugolib/site.go index 7882d517f..cf8b3a28d 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -22,6 +22,7 @@ import ( "mime" "net/url" "os" + "path" "path/filepath" "sort" "strconv" @@ -1586,11 +1587,28 @@ func (s *Site) resetBuildState() { } } +func (s *Site) singularPluralAll(sections []string) (string, string, string) { + slen := len(sections) + singular := sections[slen-1] + plural := path.Join((sections[:slen-1])...) + all := path.Join(sections...) + + return singular, plural, all +} + func (s *Site) kindFromSections(sections []string) string { if len(sections) == 0 { return KindSection } + _, plural, all := s.singularPluralAll(sections) + + if _, ok := s.Taxonomies[all]; ok { + return KindTaxonomyTerm + } else if _, ok := s.Taxonomies[plural]; ok { + return KindTaxonomy + } + if _, isTaxonomy := s.Taxonomies[sections[0]]; isTaxonomy { if len(sections) == 1 { return KindTaxonomyTerm @@ -1876,8 +1894,10 @@ func (s *Site) newHomePage() *Page { } func (s *Site) newTaxonomyPage(plural, key string) *Page { + sections := strings.Split(plural, "/") + sections = append(sections, key) - p := s.newNodePage(KindTaxonomy, plural, key) + p := s.newNodePage(KindTaxonomy, sections...) if s.Info.preserveTaxonomyNames { p.title = key @@ -1901,7 +1921,7 @@ func (s *Site) newSectionPage(name string) *Page { } func (s *Site) newTaxonomyTermsPage(plural string) *Page { - p := s.newNodePage(KindTaxonomyTerm, plural) + p := s.newNodePage(KindTaxonomyTerm, strings.Split(plural, "/")...) p.title = s.titleFunc(plural) return p } |