shithub: hugo

Download patch

ref: 65fa0692712b4c62b48b3a537b74cdd904e95246
parent: 9e4f9e0bb69276e9bca0dfbdbc7aefbf5f6fc9e5
author: Bjørn Erik Pedersen <[email protected]>
date: Sat Dec 29 05:00:17 EST 2018

Revert "hugolib: Restore taxonomy term path separation"

See #5571

This reverts commit 9ce0a1fb7011bd75eb0e2262e35354c49ce98ac5.

--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -16,7 +16,6 @@
 import (
 	"errors"
 	"io"
-	"path"
 	"path/filepath"
 	"sort"
 	"strings"
@@ -521,15 +520,6 @@
 func (h *HugoSites) createMissingPages() error {
 	var newPages Pages
 
-	singularPlural := func(p *Page) (string, string) {
-		slen := len(p.sections)
-		singular := p.sections[slen-1]
-		singular = p.s.PathSpec.MakePathSanitized(singular)
-		plural := path.Join((p.sections[:slen-1])...)
-
-		return singular, plural
-	}
-
 	for _, s := range h.Sites {
 		if s.isEnabled(KindHome) {
 			// home pages
@@ -554,7 +544,6 @@
 		if len(taxonomies) > 0 {
 			taxonomyPages := s.findPagesByKind(KindTaxonomy)
 			taxonomyTermsPages := s.findPagesByKind(KindTaxonomyTerm)
-
 			for _, plural := range taxonomies {
 				if s.isEnabled(KindTaxonomyTerm) {
 					foundTaxonomyTermsPage := false
@@ -581,10 +570,11 @@
 							key = s.PathSpec.MakeSegment(key)
 						}
 						for _, p := range taxonomyPages {
-
-							singularKey, pluralKey := singularPlural(p)
-
-							if pluralKey == plural && singularKey == key {
+							// Some people may have /authors/MaxMustermann etc. as paths.
+							// p.sections contains the raw values from the file system.
+							// See https://github.com/gohugoio/hugo/issues/4238
+							singularKey := s.PathSpec.MakePathSanitized(p.sections[1])
+							if p.sections[0] == plural && singularKey == key {
 								foundTaxonomyPage = true
 								break
 							}
--- a/hugolib/hugo_sites_build_test.go
+++ b/hugolib/hugo_sites_build_test.go
@@ -100,8 +100,8 @@
 	// Check list pages
 	b.AssertFileContent(pathMod("public/fr/sect/index.html"), "List", "Bonjour")
 	b.AssertFileContent("public/en/sect/index.html", "List", "Hello")
-	b.AssertFileContent(pathMod("public/fr/plaques/frtag1/index.html"), "Taxonomy List", "Bonjour")
-	b.AssertFileContent("public/en/tags/tag1/index.html", "Taxonomy List", "Hello")
+	b.AssertFileContent(pathMod("public/fr/plaques/frtag1/index.html"), "List", "Bonjour")
+	b.AssertFileContent("public/en/tags/tag1/index.html", "List", "Hello")
 
 	// Check sitemaps
 	// Sitemaps behaves different: In a multilanguage setup there will always be a index file and
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -1774,8 +1774,8 @@
 		case KindHome:
 			pages = s.RegularPages
 		case KindTaxonomy:
-			plural := path.Join(p.sections[:len(p.sections)-1]...)
-			term := p.sections[len(p.sections)-1]
+			plural := p.sections[0]
+			term := p.sections[1]
 
 			if s.Info.preserveTaxonomyNames {
 				if v, ok := s.taxonomiesOrigKey[fmt.Sprintf("%s-%s", plural, term)]; ok {
@@ -1792,7 +1792,7 @@
 			p.data["Term"] = term
 			pages = taxonomy.Pages()
 		case KindTaxonomyTerm:
-			plural := path.Join(p.sections...)
+			plural := p.sections[0]
 			singular := s.taxonomiesPluralSingular[plural]
 
 			p.data["Singular"] = singular
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -22,7 +22,6 @@
 	"mime"
 	"net/url"
 	"os"
-	"path"
 	"path/filepath"
 	"sort"
 	"strconv"
@@ -1587,28 +1586,11 @@
 	}
 }
 
-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
@@ -1864,10 +1846,8 @@
 }
 
 func (s *Site) newTaxonomyPage(plural, key string) *Page {
-	sections := strings.Split(plural, "/")
-	sections = append(sections, key)
 
-	p := s.newNodePage(KindTaxonomy, sections...)
+	p := s.newNodePage(KindTaxonomy, plural, key)
 
 	if s.Info.preserveTaxonomyNames {
 		p.title = key
@@ -1891,7 +1871,7 @@
 }
 
 func (s *Site) newTaxonomyTermsPage(plural string) *Page {
-	p := s.newNodePage(KindTaxonomyTerm, strings.Split(plural, "/")...)
+	p := s.newNodePage(KindTaxonomyTerm, plural)
 	p.title = s.titleFunc(plural)
 	return p
 }
--- a/hugolib/taxonomy_test.go
+++ b/hugolib/taxonomy_test.go
@@ -243,44 +243,3 @@
 	th.assertFileContent(pathFunc("public/empties/index.html"), "Terms List", "Empties")
 
 }
-
-// https://github.com/gohugoio/hugo/issues/5513
-func TestTaxonomyPathSeparation(t *testing.T) {
-	t.Parallel()
-
-	config := `
-baseURL = "https://example.com"
-
-[taxonomies]
-"news/tag" = "news/tags"
-"news/category" = "news/categories"
-`
-
-	pageContent := `
-+++
-title = "foo"
-"news/categories" = ["a", "b", "c"]
-+++
-
-Content.
-
-
-`
-
-	b := newTestSitesBuilder(t)
-	b.WithConfigFile("toml", config)
-	b.WithContent("page.md", pageContent)
-	b.WithContent("news/categories/b/_index.md", `
----
-title: "This is B"
----
-
-`)
-
-	b.CreateSites().Build(BuildCfg{})
-
-	b.AssertFileContent("public/news/categories/index.html", "Taxonomy Term Page 1|News/Categories|Hello|https://example.com/news/categories/|")
-	b.AssertFileContent("public/news/categories/a/index.html", "Taxonomy List Page 1|A|Hello|https://example.com/news/categories/a/|")
-	b.AssertFileContent("public/news/categories/b/index.html", "Taxonomy List Page 1|This is B|Hello|https://example.com/news/categories/b/|")
-
-}
--- a/hugolib/testhelpers_test.go
+++ b/hugolib/testhelpers_test.go
@@ -420,15 +420,12 @@
 			"content/sect/doc1.nn.md", contentTemplate,
 		}
 
-		listTemplateCommon = "{{ $p := .Paginator }}{{ $p.PageNumber }}|{{ .Title }}|{{ i18n \"hello\" }}|{{ .Permalink }}|Pager: {{ template \"_internal/pagination.html\" . }}"
-
 		defaultTemplates = []string{
 			"_default/single.html", "Single: {{ .Title }}|{{ i18n \"hello\" }}|{{.Lang}}|{{ .Content }}",
-			"_default/list.html", "List Page " + listTemplateCommon,
+			"_default/list.html", "{{ $p := .Paginator }}List Page {{ $p.PageNumber }}: {{ .Title }}|{{ i18n \"hello\" }}|{{ .Permalink }}|Pager: {{ template \"_internal/pagination.html\" . }}",
 			"index.html", "{{ $p := .Paginator }}Default Home Page {{ $p.PageNumber }}: {{ .Title }}|{{ .IsHome }}|{{ i18n \"hello\" }}|{{ .Permalink }}|{{  .Site.Data.hugo.slogan }}|String Resource: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").RelPermalink  }}",
 			"index.fr.html", "{{ $p := .Paginator }}French Home Page {{ $p.PageNumber }}: {{ .Title }}|{{ .IsHome }}|{{ i18n \"hello\" }}|{{ .Permalink }}|{{  .Site.Data.hugo.slogan }}|String Resource: {{ ( \"Hugo Pipes\" | resources.FromString \"text/pipes.txt\").RelPermalink  }}",
-			"_default/terms.html", "Taxonomy Term Page " + listTemplateCommon,
-			"_default/taxonomy.html", "Taxonomy List Page " + listTemplateCommon,
+
 			// Shortcodes
 			"shortcodes/shortcode.html", "Shortcode: {{ i18n \"hello\" }}",
 			// A shortcode in multiple languages