diff --git a/lib/blocklib.php b/lib/blocklib.php index 54f08a8c8a2..58855e72293 100644 --- a/lib/blocklib.php +++ b/lib/blocklib.php @@ -993,7 +993,7 @@ class block_manager { * * @param string $region The name of the region to check */ - protected function ensure_content_created($region, $output) { + public function ensure_content_created($region, $output) { $this->ensure_instances_exist($region); if (!array_key_exists($region, $this->visibleblockcontent)) { $contents = array(); diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php index 033471ba740..da3dbc73be9 100644 --- a/lib/outputrenderers.php +++ b/lib/outputrenderers.php @@ -345,6 +345,16 @@ class core_renderer extends renderer_base { */ public function standard_head_html() { global $CFG, $SESSION; + + // Before we output any content, we need to ensure that certain + // page components are set up. + + // Blocks must be set up early as they may require javascript which + // has to be included in the page header before output is created. + foreach ($this->page->blocks->get_regions() as $region) { + $this->page->blocks->ensure_content_created($region, $this); + } + $output = ''; $output .= '' . "\n"; $output .= '' . "\n";