From 3238e14fdfeedf189a5af122e20bff040ac059bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 19 Apr 2018 16:35:21 +0200 Subject: [PATCH] hugolib: Prepare child page resources before the page itself To make sure that the child resources' content is ready before any shortcode is processed in their owner. See #4632 --- hugolib/page.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/hugolib/page.go b/hugolib/page.go index d0951bff7..4b7c35d76 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -1069,6 +1069,16 @@ func (p *Page) prepareForRender(cfg *BuildCfg) error { // or a template or similar has changed so wee need to do a rerendering // of the shortcodes etc. + // Handle bundled pages first, so the content is available in the + // owners' shortcodes. + for _, r := range p.Resources.ByType(pageResourceType) { + p.s.PathSpec.ProcessingStats.Incr(&p.s.PathSpec.ProcessingStats.Pages) + bp := r.(*Page) + if err := bp.prepareForRender(cfg); err != nil { + s.Log.ERROR.Printf("Failed to prepare bundled page %q for render: %s", bp.BaseFileName(), err) + } + } + // If in watch mode or if we have multiple output formats, // we need to keep the original so we can // potentially repeat this process on rebuild. @@ -1119,15 +1129,6 @@ func (p *Page) prepareForRender(cfg *BuildCfg) error { //analyze for raw stats p.analyzePage() - // Handle bundled pages. - for _, r := range p.Resources.ByType(pageResourceType) { - p.s.PathSpec.ProcessingStats.Incr(&p.s.PathSpec.ProcessingStats.Pages) - bp := r.(*Page) - if err := bp.prepareForRender(cfg); err != nil { - s.Log.ERROR.Printf("Failed to prepare bundled page %q for render: %s", bp.BaseFileName(), err) - } - } - return nil }