function scheduled_publish_entity_display_build_alter in Scheduled Publish 8.3
Implements hook_entity_display_build_alter().
File
- ./
scheduled_publish.module, line 130 - Contains scheduled_publish.module.
Code
function scheduled_publish_entity_display_build_alter(&$build, $context) {
// This is necessary to display field values included in
// scheduled_publish_views_data_alter via union.
if ($context['view_mode'] === '_custom') {
$fields = scheduled_publish_get_node_fields();
$first_field = array_shift($fields);
$components = $context['display']
->getComponents();
if (isset($components[$first_field]) && !isset($build[$first_field])) {
foreach ($fields as $field) {
if ($context['entity']
->hasField($field)) {
// Based on Drupal\Core\Entity\Entity buildMultiple() method.
$context['display']
->setComponent($field, $components[$first_field]);
$formatter = $context['display']
->getRenderer($field);
$items = $context['entity']
->get($field);
$items
->filterEmptyItems();
$grouped_items[$context['entity']
->id()] = $items;
$formatter
->prepareView($grouped_items);
$field_access = $items
->access('view', NULL, TRUE);
if ($context['entity'] instanceof TranslatableInterface && $context['entity']
->isTranslatable()) {
$view_langcode = $context['entity']
->language()
->getId();
}
else {
$view_langcode = NULL;
}
$build[$first_field] = $field_access
->isAllowed() ? $formatter
->view($items, $view_langcode) : [];
}
}
}
}
}