shithub: hugo

Download patch

ref: 3238e14fdfeedf189a5af122e20bff040ac059bd
parent: 47c05c47e0b663632a649ee5d256acc1a32fe9e4
author: Bjørn Erik Pedersen <[email protected]>
date: Thu Apr 19 12:35:21 EDT 2018

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

--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -1069,6 +1069,16 @@
 	// 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.
@@ -1118,15 +1128,6 @@
 
 	//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
 }