diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-02-21 09:02:07 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-02-21 09:41:39 +0100 |
commit | f46053034759c4f9790a79e0a146dbc1b426b1ff (patch) | |
tree | 8162b999e444b887f104ffdf1ae700352860bccb /hugolib/page__new.go | |
parent | 4c2a0de412a850745ad32e580fcd65575192ca53 (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.go | 32 |
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 } } |