1.20.x layout_renderer_standard.inc | LayoutRendererStandard::renderBlocks() |
Render all prepared blocks, first by dispatching to their plugin's render callback, then handing that output off to the block's style plugin.
Return value
array: The array of rendered blocks, keyed on block UUID.
File
- modules/
layout/ plugins/ renderers/ layout_renderer_standard.inc, line 453
Class
- LayoutRendererStandard
- The standard render for a Layout display object.
Code
function renderBlocks() {
$this->rendered['blocks'] = array();
// Do a pass through all blocks to check for the main system content block.
// This serves a dual-purpose of rendering the system block first, allowing
// modifications to other blocks (such as breadcrumb), and it prevents
// rendering of all other blocks in the event of a 404 or 403 response from
// the system menu handler.
foreach ($this->prepared['blocks'] as $uuid => $block) {
if ($block->module === 'system' && $block->delta === 'main') {
$system_content = $this->renderBlock($block);
$response_code = (int) $system_content;
// If a 404 or 403 skip all rendering and return nothing, as the error
// page will generate its own replacement content.
if ($response_code === MENU_NOT_FOUND || $response_code === MENU_ACCESS_DENIED) {
$this->menu_response = $response_code;
return array();
}
}
}
// Render all other blocks.
foreach ($this->prepared['blocks'] as $uuid => $block) {
if ($block->module === 'system' && $block->delta === 'main') {
$this->rendered['blocks'][$uuid] = $system_content;
}
elseif ($content = $this->renderBlock($block)) {
$this->rendered['blocks'][$uuid] = $content;
}
}
return $this->rendered['blocks'];
}