shithub: hugo

Download patch

ref: ecedc85cb726f8ab971842e1d59079e1049540be
parent: d3d3863c05c4cd3c3f22eb9e977bcf407a903c45
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Nov 9 15:55:42 EST 2016

node to page: Handle taxonomies on home page etc.

Updates #2297

--- a/hugolib/node_as_page_test.go
+++ b/hugolib/node_as_page_test.go
@@ -152,23 +152,8 @@
 	testCommonResetState()
 
 	writeLayoutsForNodeAsPageTests(t)
+	writeRegularPagesForNodeAsPageTests(t)
 
-	for i := 1; i <= 4; i++ {
-		sect := "sect1"
-		if i > 2 {
-			sect = "sect2"
-		}
-		writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.md", i)), fmt.Sprintf(`---
-title: Page %02d
-categories:  [
-        "Hugo",
-		"Web"
-]
----
-Content Page %02d
-`, i, i))
-	}
-
 	viper.Set("paginate", 1)
 	viper.Set("title", "Hugo Rocks!")
 	viper.Set("rssURI", "customrss.xml")
@@ -238,21 +223,7 @@
 `)
 
 	for _, lang := range []string{"nn", "en"} {
-		for i := 1; i <= 4; i++ {
-			sect := "sect1"
-			if i > 2 {
-				sect = "sect2"
-			}
-			writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.%s.md", i, lang)), fmt.Sprintf(`---
-title: Page %02d
-categories:  [
-        "Hugo",
-		"Web"
-]
----
-Content Page %02d
-`, i, i))
-		}
+		writeRegularPagesForNodeAsPageTestsWithLang(t, lang)
 	}
 
 	// Only write node pages for the English side of the fence
@@ -322,6 +293,66 @@
 	assertFileContent(t, filepath.Join("public", "en", "categories", "hugo", "customrss.xml"), true, "Recent content in Taxonomy Hugo on Hugo in English", "<rss")
 	assertFileContent(t, filepath.Join("public", "en", "categories", "web", "customrss.xml"), true, "Recent content in Taxonomy Web on Hugo in English", "<rss")
 
+}
+
+func TestNodesWithTaxonomies(t *testing.T) {
+	//jww.SetStdoutThreshold(jww.LevelDebug)
+	//defer jww.SetStdoutThreshold(jww.LevelFatal)
+	testCommonResetState()
+
+	writeLayoutsForNodeAsPageTests(t)
+	writeRegularPagesForNodeAsPageTests(t)
+
+	writeSource(t, filepath.Join("content", "_index.md"), `---
+title: Home With Taxonomies
+categories:  [
+        "Hugo",
+		"Home"
+]
+---
+`)
+
+	viper.Set("paginate", 1)
+	viper.Set("title", "Hugo Rocks!")
+	viper.Set("rssURI", "customrss.xml")
+
+	s := newSiteDefaultLang()
+
+	if err := buildAndRenderSite(s); err != nil {
+		t.Fatalf("Failed to build site: %s", err)
+	}
+
+	assertFileContent(t, filepath.Join("public", "categories", "hugo", "index.html"), true, "Taxonomy Title: Hugo", "# Pages: 5", "Pag: Home With Taxonomies")
+	assertFileContent(t, filepath.Join("public", "categories", "home", "index.html"), true, "Taxonomy Title: Home", "# Pages: 1", "Pag: Home With Taxonomies")
+
+}
+
+func writeRegularPagesForNodeAsPageTests(t *testing.T) {
+	writeRegularPagesForNodeAsPageTestsWithLang(t, "")
+}
+
+func writeRegularPagesForNodeAsPageTestsWithLang(t *testing.T, lang string) {
+	var langStr string
+
+	if lang != "" {
+		langStr = lang + "."
+	}
+
+	for i := 1; i <= 4; i++ {
+		sect := "sect1"
+		if i > 2 {
+			sect = "sect2"
+		}
+		writeSource(t, filepath.Join("content", sect, fmt.Sprintf("regular%d.%smd", i, langStr)), fmt.Sprintf(`---
+title: Page %02d
+categories:  [
+        "Hugo",
+		"Web"
+]
+---
+Content Page %02d
+`, i, i))
+	}
 }
 
 func writeNodePagesForNodeAsPageTests(lang string, t *testing.T) {
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1340,8 +1340,6 @@
 		return
 	}
 
-	// TODO(bep) np order
-	// assembleTaxonomies: Needs pages (temp lookup) (maybe later nodes)
 	s.assembleTaxonomies()
 
 	// TODO(bep) np
@@ -1497,8 +1495,8 @@
 	for singular, plural := range taxonomies {
 		s.Taxonomies[plural] = make(Taxonomy)
 		s.taxonomiesPluralSingular[plural] = singular
-		// TODO(np) tax other nodes
-		for _, p := range s.findPagesByNodeType(NodePage) {
+
+		for _, p := range s.Nodes {
 			vals := p.getParam(plural, !s.Info.preserveTaxonomyNames)
 			weight := p.GetParam(plural + "_weight")
 			if weight == nil {