hugolib: Fix Render layouts for list pages
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 26 Mar 2017 16:51:12 +0000 (18:51 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 27 Mar 2017 13:43:56 +0000 (15:43 +0200)
hugolib/page_output.go

index 542c50e628f0808ada368ee4bfde7538fb0e6198..ed0678964a8adaabf72370915cbe8970f4095b78 100644 (file)
@@ -102,12 +102,19 @@ func (p *PageOutput) layouts(layouts ...string) []string {
 }
 
 func (p *PageOutput) Render(layout ...string) template.HTML {
+       if !p.checkRender() {
+               return template.HTML("")
+       }
+
        l := p.layouts(layout...)
        return p.s.Tmpl.ExecuteTemplateToHTML(p, l...)
 }
 
-// TODO(bep) output
 func (p *Page) Render(layout ...string) template.HTML {
+       if !p.checkRender() {
+               return template.HTML("")
+       }
+
        p.pageOutputInit.Do(func() {
                // If Render is called in a range loop, the page output isn't available.
                // So, create one.
@@ -126,6 +133,16 @@ func (p *Page) Render(layout ...string) template.HTML {
        return p.mainPageOutput.Render(layout...)
 }
 
+// We may fix this in the future, but the layout handling in Render isn't built
+// for list pages.
+func (p *Page) checkRender() bool {
+       if p.Kind != KindPage {
+               p.s.Log.ERROR.Printf(".Render only available for regular pages, not for %q of kind %q", p.Path(), p.Kind)
+               return false
+       }
+       return true
+}
+
 // OutputFormats holds a list of the relevant output formats for a given resource.
 type OutputFormats []*OutputFormat