public function BlockBase::build in Display Suite 8.2
Same name and namespace in other branches
- 8.4 src/Plugin/DsField/BlockBase.php \Drupal\ds\Plugin\DsField\BlockBase::build()
- 8.3 src/Plugin/DsField/BlockBase.php \Drupal\ds\Plugin\DsField\BlockBase::build()
Renders a field.
Overrides DsFieldBase::build
File
- src/
Plugin/ DsField/ BlockBase.php, line 74
Class
- BlockBase
- The base plugin to create DS block fields.
Namespace
Drupal\ds\Plugin\DsFieldCode
public function build() {
// Get block.
$block = $this
->getBlock();
// Apply block config.
$block_config = $this
->blockConfig();
$block
->setConfiguration($block_config);
if ($block
->access(\Drupal::currentUser())) {
// Inject context values.
if ($block instanceof ContextAwarePluginInterface) {
$contexts = $this->contextRepository
->getRuntimeContexts(array_values($block
->getContextMapping()));
$this->contextHandler
->applyContextMapping($block, $contexts);
}
$block_elements = $block
->build();
// Merge cache contexts, tags and max-age
if ($contexts = $block
->getCacheContexts()) {
$block_elements['#cache']['contexts'] = is_array($block_elements['#cache']['contexts']) ? $block_elements['#cache']['contexts'] : [];
$block_elements['#cache']['contexts'] = array_unique(array_merge($block_elements['#cache']['contexts'], $contexts));
}
if ($tags = $block
->getCacheTags()) {
$block_elements['#cache']['tags'] = is_array($block_elements['#cache']['tags']) ? $block_elements['#cache']['tags'] : [];
$block_elements['#cache']['tags'] = array_unique(array_merge($block_elements['#cache']['tags'], $tags));
}
// Add the block base config cache tag
$block_elements['#cache']['tags'][] = 'config:ds.block_base';
if ($max_age = $block
->getCacheMaxAge()) {
$block_elements['#cache']['max-age'] = $max_age;
}
// Return an empty array if there is nothing to render.
return Element::isEmpty($block_elements) ? [] : $block_elements;
}
return [];
}