commit 3238e14fdfeedf189a5af122e20bff040ac059bd
parent 47c05c47e0b663632a649ee5d256acc1a32fe9e4
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Thu, 19 Apr 2018 16:35:21 +0200
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
Diffstat:
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git 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
}