public function BootstrapLayout::build in Bootstrap Layout Builder 2.x
Same name and namespace in other branches
- 1.x src/Plugin/Layout/BootstrapLayout.php \Drupal\bootstrap_layout_builder\Plugin\Layout\BootstrapLayout::build()
Build a render array for layout with regions.
Parameters
array $regions: An associative array keyed by region name, containing render arrays representing the content that should be placed in each region.
Return value
array Render array for the layout with regions.
Overrides LayoutDefault::build
File
- src/
Plugin/ Layout/ BootstrapLayout.php, line 93
Class
- BootstrapLayout
- A layout from our bootstrap layout builder.
Namespace
Drupal\bootstrap_layout_builder\Plugin\LayoutCode
public function build(array $regions) {
$build = parent::build($regions);
// Row classes and attributes.
$section_classes = [];
if ($this->configuration['section_classes']) {
$section_classes = explode(' ', $this->configuration['section_classes']);
$build['#attributes']['class'] = $section_classes;
}
if (!empty($this->configuration['section_attributes'])) {
$section_attributes = $this->configuration['section_attributes'];
$build['#attributes'] = NestedArray::mergeDeep($build['#attributes'] ?? [], $section_attributes);
}
// The default one col layout class.
if (count($this
->getPluginDefinition()
->getRegionNames()) == 1) {
$config = $this->configFactory
->get('bootstrap_layout_builder.settings');
$one_col_layout_class = 'col-12';
if ($config
->get('one_col_layout_class')) {
$one_col_layout_class = $config
->get('one_col_layout_class');
}
$this->configuration['layout_regions_classes']['blb_region_col_1'][] = $one_col_layout_class;
}
// Regions classes and attributes.
if ($this->configuration['regions_classes']) {
foreach ($this
->getPluginDefinition()
->getRegionNames() as $region_name) {
$region_classes = $this->configuration['regions_classes'][$region_name];
if ($this->configuration['layout_regions_classes'] && isset($this->configuration['layout_regions_classes'][$region_name])) {
$build[$region_name]['#attributes']['class'] = $this->configuration['layout_regions_classes'][$region_name];
}
$build[$region_name]['#attributes']['class'][] = $region_classes;
}
}
if ($this->configuration['regions_attributes']) {
foreach ($this
->getPluginDefinition()
->getRegionNames() as $region_name) {
$region_attributes = $this->configuration['regions_attributes'][$region_name];
if (!empty($region_attributes)) {
$build[$region_name]['#attributes'] = NestedArray::mergeDeep($build[$region_name]['#attributes'] ?? [], $region_attributes);
}
}
}
// Container.
if ($this->configuration['container']) {
$theme_wrappers = [
'blb_container' => [
'#attributes' => [
'class' => [
$this->configuration['container'],
],
],
],
'blb_container_wrapper' => [
'#attributes' => [
'class' => [],
],
],
];
if ($this->configuration['container_wrapper_classes']) {
$theme_wrappers['blb_container_wrapper']['#attributes']['class'][] = $this->configuration['container_wrapper_classes'];
}
if (!empty($this->configuration['container_wrapper_attributes'])) {
$wrapper_attributes = $this->configuration['container_wrapper_attributes'];
$theme_wrappers['blb_container_wrapper']['#attributes'] = NestedArray::mergeDeep($theme_wrappers['blb_container_wrapper']['#attributes'] ?? [], $wrapper_attributes);
}
$build['#theme_wrappers'] = $theme_wrappers;
// Build dynamic styles.
$build = $this->stylesGroupManager
->buildStyles($build, $this->configuration['container_wrapper']['bootstrap_styles'], 'blb_container_wrapper');
}
return $build;
}