function view_mode_selector_entity_view_mode_alter in View Mode Selector 8
Same name and namespace in other branches
- 7 view_mode_selector.module \view_mode_selector_entity_view_mode_alter()
Implements hook_entity_view_mode_alter().
File
- ./
view_mode_selector.module, line 15 - Main file of View Mode Selector module.
Code
function view_mode_selector_entity_view_mode_alter(&$view_mode, EntityInterface $entity, $context) {
if ($view_mode !== 'view_mode_selector') {
return;
}
// Set view mode to 'Default', this is for entities without
// a view mode selector field.
$view_mode = 'default';
// Find the first view mode selector field and change the view mode.
$fields = \Drupal::service('entity_field.manager')
->getFieldDefinitions($entity
->getEntityTypeId(), $entity
->bundle());
foreach ($fields as $field_name => $field) {
if ($field
->getType() == 'view_mode_selector' && ($field_value = $entity->{$field_name}->value)) {
$view_mode = $field_value;
break;
}
}
return $view_mode;
}