From ecedc85cb726f8ab971842e1d59079e1049540be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Wed, 9 Nov 2016 20:55:42 +0100 Subject: [PATCH] node to page: Handle taxonomies on home page etc. Updates #2297 --- hugolib/node_as_page_test.go | 93 ++++++++++++++++++++++++------------ hugolib/site.go | 6 +-- 2 files changed, 64 insertions(+), 35 deletions(-) diff --git a/hugolib/node_as_page_test.go b/hugolib/node_as_page_test.go index cde29e9d6..b5c494400 100644 --- a/hugolib/node_as_page_test.go +++ b/hugolib/node_as_page_test.go @@ -152,22 +152,7 @@ func TestNodesWithNoContentFile(t *testing.T) { testCommonResetState() writeLayoutsForNodeAsPageTests(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)) - } + writeRegularPagesForNodeAsPageTests(t) viper.Set("paginate", 1) viper.Set("title", "Hugo Rocks!") @@ -238,21 +223,7 @@ title = "Hugo in English" `) 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 @@ -324,6 +295,66 @@ Content Page %02d } +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) { filename := "_index.md" diff --git a/hugolib/site.go b/hugolib/site.go index 026f292cf..375ffaac1 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -1340,8 +1340,6 @@ func (s *Site) buildSiteMeta() (err error) { return } - // TODO(bep) np order - // assembleTaxonomies: Needs pages (temp lookup) (maybe later nodes) s.assembleTaxonomies() // TODO(bep) np @@ -1497,8 +1495,8 @@ func (s *Site) assembleTaxonomies() { 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 {