shithub: hugo

Download patch

ref: bcbed4ebdaf55b67abc521d69bba456c041a7e7d
parent: 009076e5ee88fc46c95a9afd34f82f9386aa282a
author: Bjørn Erik Pedersen <[email protected]>
date: Wed May 1 13:51:03 EDT 2019

hugolib: Fix PrevInSection/NextInSection for nested sections

This was broken in Hugo 0.55.0.

Fixes #5883

--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -220,7 +220,7 @@
 			if p1.IsPage() && p1.Section() == "" {
 				rootSection = append(rootSection, i)
 			}
-			if p1.IsSection() && len(p1.SectionsEntries()) <= 1 {
+			if p1.IsSection() {
 				sectionPages := p1.Pages()
 				for i, p2 := range sectionPages {
 					p2s := p2.(*pageState)
--- a/hugolib/site_sections_test.go
+++ b/hugolib/site_sections_test.go
@@ -330,3 +330,48 @@
 	th.assertFileContent("public/l1/l2/page/2/index.html", "L1/l2-IsActive: true", "PAG|T2_3|true")
 
 }
+
+func TestNextInSectionNested(t *testing.T) {
+	t.Parallel()
+
+	pageContent := `---
+title: "The Page"
+weight: %d
+---
+Some content.
+`
+	createPageContent := func(weight int) string {
+		return fmt.Sprintf(pageContent, weight)
+	}
+
+	b := newTestSitesBuilder(t)
+	b.WithSimpleConfigFile()
+	b.WithTemplates("_default/single.html", `
+Prev: {{ with .PrevInSection }}{{ .RelPermalink }}{{ end }}|
+Next: {{ with .NextInSection }}{{ .RelPermalink }}{{ end }}|
+`)
+
+	b.WithContent("blog/page1.md", createPageContent(1))
+	b.WithContent("blog/page2.md", createPageContent(2))
+	b.WithContent("blog/cool/_index.md", createPageContent(1))
+	b.WithContent("blog/cool/cool1.md", createPageContent(1))
+	b.WithContent("blog/cool/cool2.md", createPageContent(2))
+	b.WithContent("root1.md", createPageContent(1))
+	b.WithContent("root2.md", createPageContent(2))
+
+	b.Build(BuildCfg{})
+
+	b.AssertFileContent("public/root1/index.html",
+		"Prev: /root2/|", "Next: |")
+	b.AssertFileContent("public/root2/index.html",
+		"Prev: |", "Next: /root1/|")
+	b.AssertFileContent("public/blog/page1/index.html",
+		"Prev: /blog/page2/|", "Next: |")
+	b.AssertFileContent("public/blog/page2/index.html",
+		"Prev: |", "Next: /blog/page1/|")
+	b.AssertFileContent("public/blog/cool/cool1/index.html",
+		"Prev: /blog/cool/cool2/|", "Next: |")
+	b.AssertFileContent("public/blog/cool/cool2/index.html",
+		"Prev: |", "Next: /blog/cool/cool1/|")
+
+}