ref: 2d159e9cc7a25832e4b0cad226b149f7c4624708
parent: f45cb3172862140883cfa08bd401c17e1ada5b39
author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
date: Thu Jan 30 13:35:40 EST 2020
Do not render alias paginator pages for non-HTML outputs Update #6797
--- a/hugolib/paginator_test.go
+++ b/hugolib/paginator_test.go
@@ -17,6 +17,8 @@
"fmt"
"path/filepath"
"testing"
+
+ qt "github.com/frankban/quicktest"
)
func TestPaginator(t *testing.T) {
@@ -104,4 +106,35 @@
b.WithTemplatesAdded("index.html", `{{ range (.Paginate (sort .Site.RegularPages ".File.Filename" "desc")).Pages }}|{{ .File.Filename }}{{ end }}`)
b.Build(BuildCfg{}).AssertFileContent("public/index.html",
filepath.FromSlash("|content/sect/doc1.nn.md|content/sect/doc1.nb.md|content/sect/doc1.fr.md|content/sect/doc1.en.md"))
+}
+
+// https://github.com/gohugoio/hugo/issues/6797
+func TestPaginateOutputFormat(t *testing.T) {
+ b := newTestSitesBuilder(t).WithSimpleConfigFile()
+ b.WithContent("_index.md", `---
+title: "Home"
+cascade:
+ outputs:
+ - JSON
+---`)
+
+ for i := 0; i < 22; i++ {
+ b.WithContent(fmt.Sprintf("p%d.md", i+1), fmt.Sprintf(`---
+title: "Page"
+weight: %d
+---`, i+1))
+ }
+
+ b.WithTemplatesAdded("index.json", `JSON: {{ .Paginator.TotalNumberOfElements }}: {{ range .Paginator.Pages }}|{{ .RelPermalink }}{{ end }}:DONE`)
+ b.Build(BuildCfg{})
+
+ b.AssertFileContent("public/index.json",
+ `JSON: 22
+|/p1/index.json|/p2/index.json|
+`)
+
+ // This looks odd, so are most bugs.
+ b.Assert(b.CheckExists("public/page/1/index.json/index.html"), qt.Equals, false)
+ b.Assert(b.CheckExists("public/page/1/index.json"), qt.Equals, false)
+ b.AssertFileContent("public/page/2/index.json", `JSON: 22: |/p11/index.json|/p12/index.json`)
}
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -205,12 +205,14 @@
panic(fmt.Sprintf("invalid paginator state for %q", p.pathOrTitle()))
}
- // Write alias for page 1
- d.Addends = fmt.Sprintf("/%s/%d", paginatePath, 1)
- targetPaths := page.CreateTargetPaths(d)
+ if f.IsHTML {
+ // Write alias for page 1
+ d.Addends = fmt.Sprintf("/%s/%d", paginatePath, 1)
+ targetPaths := page.CreateTargetPaths(d)
- if err := s.writeDestAlias(targetPaths.TargetFilename, p.Permalink(), f, nil); err != nil {
- return err
+ if err := s.writeDestAlias(targetPaths.TargetFilename, p.Permalink(), f, nil); err != nil {
+ return err
+ }
}
// Render pages for the rest