function view_mode_selector_entity_view_mode_alter in View Mode Selector 7
Same name and namespace in other branches
- 8 view_mode_selector.module \view_mode_selector_entity_view_mode_alter()
Implements hook_entity_view_mode_alter().
File
- ./
view_mode_selector.module, line 324 - Main file of View Mode Selector module.
Code
function view_mode_selector_entity_view_mode_alter(&$view_mode, $context) {
list(, , $bundle) = entity_extract_ids($context['entity_type'], $context['entity']);
$fields_info = field_info_instances($context['entity_type'], $bundle);
if ($view_mode !== 'view_mode_selector') {
return;
}
// Set view mode to 'Default', this is for entites without
// a view mode selector field.
$view_mode = 'default';
// Find a view mode selector field and change the view mode.
foreach ($fields_info as $field_name => $value) {
$field_info = field_info_field($field_name);
if ($field_info['type'] == 'view_mode_selector') {
$items = field_get_items($context['entity_type'], $context['entity'], $field_info['field_name']);
if ($items) {
$value = $items[0]['value'];
if ($value) {
$view_mode = $value;
// It would not make sense to have multiple view mode selector
// fields so stop after the first was found.
return;
}
}
}
}
}