1 layout_renderer_standard.inc | LayoutRendererStandard::renderBlock($block) |
Render a block using its designated style.
This method also manages 'title block' functionality, where the title from an individual block can be bubbled up to take over the title for the entire display.
Parameters
Block $block: The block to be rendered.
Return value
string: The rendered block as HTML.
File
- core/
modules/ layout/ plugins/ renderers/ layout_renderer_standard.inc, line 514
Class
- LayoutRendererStandard
- The standard render for a Layout display object.
Code
function renderBlock($block) {
// Pass any page title to the page components block before rendering it.
if (method_exists($block, 'setPageTitle')) {
/* @var $block PageComponents */
$page_title = isset($this->page_title) ? $this->page_title : backdrop_get_title();
$block->setPageTitle($page_title);
}
$output = '';
if ($content = $block->getContent()) {
$style = layout_get_style_info($block->style->plugin);
// Ensure block content is a renderable array for contextual links.
if (is_string($content)) {
$content = array(
'#markup' => $content,
);
}
// Add the contextual links.
if (!($block->module === 'system' && $block->delta === 'main')) {
$content['#contextual_links']['layout'] = array('admin/structure/layouts/manage/' . $this->layout->name . '/modal', array($block->uuid));
}
$title = '';
if ($block->settings['title_display'] !== LAYOUT_TITLE_NONE) {
$title = $block->getTitle();
}
$data = array(
'title' => $title,
'content' => $content,
);
// Allow altering of the title and content by other modules.
backdrop_alter(array('block_view', 'block_view_' . $block->module . '_' . str_replace('-', '_', $block->delta)), $data, $block);
// Assemble a structured content array.
$content = (object) array(
'title' => $data['title'],
'content' => $data['content'],
);
if (isset($style) && isset($style['block theme'])) {
$output = theme($style['block theme'] . '__' . $block->module . '__' . strtr($block->delta, '-', '_'), array('content' => $content, 'layout' => $this->layout, 'block' => $block, 'style' => $style, 'settings' => $block->style->settings));
}
else {
// Fallback.
$output = theme('block', array('content' => $content, 'layout' => $this->layout, 'block' => $block));
}
}
return $output;
}