From 2d159e9cc7a25832e4b0cad226b149f7c4624708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 30 Jan 2020 18:35:40 +0100 Subject: [PATCH] Do not render alias paginator pages for non-HTML outputs Update #6797 --- hugolib/paginator_test.go | 33 +++++++++++++++++++++++++++++++++ hugolib/site_render.go | 12 +++++++----- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/hugolib/paginator_test.go b/hugolib/paginator_test.go index a97a59d04c8..e6a19615065 100644 --- a/hugolib/paginator_test.go +++ b/hugolib/paginator_test.go @@ -17,6 +17,8 @@ import ( "fmt" "path/filepath" "testing" + + qt "github.com/frankban/quicktest" ) func TestPaginator(t *testing.T) { @@ -105,3 +107,34 @@ func TestPaginateWithSort(t *testing.T) { 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`) +} diff --git a/hugolib/site_render.go b/hugolib/site_render.go index 59f26599628..dd79a726497 100644 --- a/hugolib/site_render.go +++ b/hugolib/site_render.go @@ -205,12 +205,14 @@ func (s *Site) renderPaginator(p *pageState, templ tpl.Template) error { 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