hugolib: Fix changing paginators in lazy render
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 6 Nov 2018 09:04:37 +0000 (10:04 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 6 Nov 2018 10:04:10 +0000 (11:04 +0100)
Fixes #5406

hugolib/hugo_sites.go
hugolib/page.go

index 65e3260f6b856531e83cf0f0cceb9c8c08b7ec6d..9cc091927c78c23e2c1c0286db3ab9c52bf15c52 100644 (file)
@@ -416,6 +416,7 @@ type BuildCfg struct {
 // a Page: If it is recently visited (the home pages will always be in this set) or changed.
 // Note that a page does not have to have a content page / file.
 // For regular builds, this will allways return true.
+// TODO(bep) rename/work this.
 func (cfg *BuildCfg) shouldRender(p *Page) bool {
        if p.forceRender {
                p.forceRender = false
@@ -427,6 +428,9 @@ func (cfg *BuildCfg) shouldRender(p *Page) bool {
        }
 
        if cfg.RecentlyVisited[p.RelPermalink()] {
+               if cfg.PartialReRender {
+                       _ = p.initMainOutputFormat()
+               }
                return true
        }
 
@@ -644,15 +648,13 @@ func (h *HugoSites) setupTranslations() {
 
 func (s *Site) preparePagesForRender(start bool) error {
        for _, p := range s.Pages {
-               p.setContentInit(start)
-               if err := p.initMainOutputFormat(); err != nil {
+               if err := p.prepareForRender(start); err != nil {
                        return err
                }
        }
 
        for _, p := range s.headlessPages {
-               p.setContentInit(start)
-               if err := p.initMainOutputFormat(); err != nil {
+               if err := p.prepareForRender(start); err != nil {
                        return err
                }
        }
index 070df133bea6da0f77245bf16506ae05aea8038f..c726394a2a52a3426f4b8584ed51a61da8da2090 100644 (file)
@@ -304,7 +304,7 @@ func (p *Page) initContent() {
                go func() {
                        var err error
 
-                       err = p.prepareForRender()
+                       err = p.prepareContent()
                        if err != nil {
                                c <- err
                                return
@@ -1142,11 +1142,17 @@ func (p *Page) subResourceTargetPathFactory(base string) string {
        return path.Join(p.relTargetPathBase, base)
 }
 
-func (p *Page) initMainOutputFormat() error {
-       if p.mainPageOutput != nil {
-               return nil
+// Prepare this page for rendering for a new site. The flag start is set
+// for the first site and output format.
+func (p *Page) prepareForRender(start bool) error {
+       p.setContentInit(start)
+       if start {
+               return p.initMainOutputFormat()
        }
+       return nil
+}
 
+func (p *Page) initMainOutputFormat() error {
        outFormat := p.outputFormats[0]
        pageOutput, err := newPageOutput(p, false, false, outFormat)
 
@@ -1193,7 +1199,7 @@ func (p *Page) setContentInit(start bool) error {
 
 }
 
-func (p *Page) prepareForRender() error {
+func (p *Page) prepareContent() error {
        s := p.s
 
        // If we got this far it means that this is either a new Page pointer