function template_preprocess_ds_entity_view in Display Suite 8.4
Same name and namespace in other branches
- 8.2 ds.module \template_preprocess_ds_entity_view()
- 8.3 ds.module \template_preprocess_ds_entity_view()
Process entity view.
File
- ./
ds.module, line 402 - Display Suite core functions.
Code
function template_preprocess_ds_entity_view(&$variables) {
$build = $variables['content'];
if (empty($build['#ds_configuration'])) {
return;
}
$configuration = $build['#ds_configuration'];
unset($build['#theme']);
unset($build['#pre_render']);
unset($build['#sorted']);
unset($build['#children']);
unset($build['#render_children']);
unset($build['#prefix']);
unset($build['#suffix']);
unset($build['#attached']['html_head_link']);
// Create region variables based on the layout settings.
$use_field_names = \Drupal::config('ds.settings')
->get('use_field_names');
$regions = [];
foreach (array_keys($configuration['regions']) as $region_name) {
$regions[$region_name] = [];
// Create the region content.
if (!empty($configuration['regions'][$region_name])) {
foreach ($configuration['regions'][$region_name] as $key => $field) {
// Make sure the field exists.
if (!isset($build[$field])) {
continue;
}
if (!isset($build[$field]['#weight'])) {
$build[$field]['#weight'] = $key;
}
if ($use_field_names) {
$regions[$region_name][$field] = $build[$field];
}
else {
$regions[$region_name][$key] = $build[$field];
}
}
}
}
/* @var \Drupal\layout_plugin\Plugin\Layout\LayoutInterface $layout */
$layout = \Drupal::service('plugin.manager.core.layout')
->createInstance($configuration['layout']['id'], $configuration['layout']['settings']);
$build = array_merge($build, $layout
->build($regions));
// Disable CSS files when needed.
if ($build['#ds_configuration']['layout']['disable_css']) {
$library = $build['#ds_configuration']['layout']['library'];
$attached = $build['#attached']['library'];
$index = array_search($library, $attached);
unset($build['#attached']['library'][$index]);
}
$variables['content'] = $build;
}