summaryrefslogtreecommitdiffstats
path: root/hugolib/page__new.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-21 09:02:07 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-02-21 09:41:39 +0100
commitf46053034759c4f9790a79e0a146dbc1b426b1ff (patch)
tree8162b999e444b887f104ffdf1ae700352860bccb /hugolib/page__new.go
parent4c2a0de412a850745ad32e580fcd65575192ca53 (diff)
Fix panic on no output formats
A page needs its output formats even if it should not be rendered or its resources should not be published. Fixes #6924
Diffstat (limited to 'hugolib/page__new.go')
-rw-r--r--hugolib/page__new.go32
1 files changed, 18 insertions, 14 deletions
diff --git a/hugolib/page__new.go b/hugolib/page__new.go
index 12aeadd35..4f8abdde5 100644
--- a/hugolib/page__new.go
+++ b/hugolib/page__new.go
@@ -137,26 +137,30 @@ func newPageFromMeta(
return newPageOutput(ps, pp, f, render)
}
+ shouldRenderPage := !ps.m.noRender()
+
if ps.m.standalone {
- ps.pageOutput = makeOut(ps.m.outputFormats()[0], !ps.m.noRender())
+ ps.pageOutput = makeOut(ps.m.outputFormats()[0], shouldRenderPage)
} else {
outputFormatsForPage := ps.m.outputFormats()
- if !ps.m.noRender() {
- ps.pageOutputs = make([]*pageOutput, len(ps.s.h.renderFormats))
- created := make(map[string]*pageOutput)
- for i, f := range ps.s.h.renderFormats {
- po, found := created[f.Name]
- if !found {
- _, shouldRender := outputFormatsForPage.GetByName(f.Name)
- po = makeOut(f, shouldRender)
- created[f.Name] = po
+ // Prepare output formats for all sites.
+ // We do this even if this page does not get rendered on
+ // its own. It may be referenced via .Site.GetPage and
+ // it will then need an output format.
+ ps.pageOutputs = make([]*pageOutput, len(ps.s.h.renderFormats))
+ created := make(map[string]*pageOutput)
+ for i, f := range ps.s.h.renderFormats {
+ po, found := created[f.Name]
+ if !found {
+ render := shouldRenderPage
+ if render {
+ _, render = outputFormatsForPage.GetByName(f.Name)
}
- ps.pageOutputs[i] = po
+ po = makeOut(f, render)
+ created[f.Name] = po
}
- } else {
- // We need one output format for potential resources to publish.
- ps.pageOutputs = []*pageOutput{makeOut(outputFormatsForPage[0], false)}
+ ps.pageOutputs[i] = po
}
}