You are here

function view_mode_selector_entity_view_mode_alter in View Mode Selector 7

Same name and namespace in other branches
  1. 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;
        }
      }
    }
  }
}