Do not render alias paginator pages for non-HTML outputs

Update #6797
This commit is contained in:
Bjørn Erik Pedersen 2020-01-30 18:35:40 +01:00
parent f45cb31728
commit 2d159e9cc7
2 changed files with 40 additions and 5 deletions

View file

@ -17,6 +17,8 @@ import (
"fmt" "fmt"
"path/filepath" "path/filepath"
"testing" "testing"
qt "github.com/frankban/quicktest"
) )
func TestPaginator(t *testing.T) { func TestPaginator(t *testing.T) {
@ -105,3 +107,34 @@ func TestPaginateWithSort(t *testing.T) {
b.Build(BuildCfg{}).AssertFileContent("public/index.html", 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")) 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`)
}

View file

@ -205,6 +205,7 @@ func (s *Site) renderPaginator(p *pageState, templ tpl.Template) error {
panic(fmt.Sprintf("invalid paginator state for %q", p.pathOrTitle())) panic(fmt.Sprintf("invalid paginator state for %q", p.pathOrTitle()))
} }
if f.IsHTML {
// Write alias for page 1 // Write alias for page 1
d.Addends = fmt.Sprintf("/%s/%d", paginatePath, 1) d.Addends = fmt.Sprintf("/%s/%d", paginatePath, 1)
targetPaths := page.CreateTargetPaths(d) targetPaths := page.CreateTargetPaths(d)
@ -212,6 +213,7 @@ func (s *Site) renderPaginator(p *pageState, templ tpl.Template) error {
if err := s.writeDestAlias(targetPaths.TargetFilename, p.Permalink(), f, nil); err != nil { if err := s.writeDestAlias(targetPaths.TargetFilename, p.Permalink(), f, nil); err != nil {
return err return err
} }
}
// Render pages for the rest // Render pages for the rest
for current := p.paginator.current.Next(); current != nil; current = current.Next() { for current := p.paginator.current.Next(); current != nil; current = current.Next() {