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 {