You are here

view_mode_templates.module in View Mode Templates 7

Templates for Entity View Modes

File

view_mode_templates.module
View source
<?php

/**
 * @file
 * Templates for Entity View Modes
 */

/**
 * Implements hook_theme().
 */
function view_mode_templates_theme() {
  $theme_functions = array();

  // View mode templates
  $templates = _view_mode_templates();
  foreach ($templates as $template => $module) {
    $theme_functions[$template] = array(
      'render element' => 'elements',
      'template' => strtr($template, '_', '-'),
      'path' => drupal_get_path('module', $module) . '/templates',
    );
  }
  return $theme_functions;
}

/**
 * Implements hook_preprocess().
 */
function view_mode_templates_preprocess(&$variables, $hook) {
  if (array_key_exists($hook, entity_get_info())) {
    $entity_type = $variables['elements']['#entity_type'];
    $bundle = $variables['elements']['#bundle'];
    $view_mode = $variables['elements']['#view_mode'];
    $variables['theme_hook_suggestions'][] = $entity_type . '__' . $bundle . '__' . $view_mode;
    $variables['theme_hook_suggestions'][] = $entity_type . '__' . $bundle;
    $variables['theme_hook_suggestions'][] = $entity_type . '__' . $view_mode;
  }
}

/**
 * Returns a list of view mode templates
 */
function _view_mode_templates() {
  $templates = array();
  foreach (module_implements('view_mode_templates') as $module) {
    $module_templates = module_invoke($module, 'view_mode_templates');
    foreach ($module_templates as $template) {
      $templates[$template] = $module;
    }
  }
  return $templates;
}

Functions

Namesort descending Description
view_mode_templates_preprocess Implements hook_preprocess().
view_mode_templates_theme Implements hook_theme().
_view_mode_templates Returns a list of view mode templates