'elements', // Template needs to be set in order to actually have preprocess functions // added to its registry. 'template' => 'does-not-exist', 'function' => 'entity_view_mode_test_return_suggestions', ); return $info; } function template_preprocess_entity_view_mode_test(&$variables) { $variables['theme_hook_suggestions'][] = 'test__last'; $variables['theme_hook_suggestions'][] = 'test__bundle'; $variables['theme_hook_suggestions'][] = 'test__id'; $variables['theme_hook_suggestions'][] = 'test__first'; } /** * Implements hook_theme_registry_alter(). */ function entity_view_mode_test_theme_registry_alter(&$registry) { if ($hooks = variable_get('entity_view_mode_theme_output_suggestions', array())) { foreach ($hooks as $hook) { if (isset($registry[$hook])) { $registry[$hook]['function'] = 'entity_view_mode_test_return_suggestions'; } } } } function entity_view_mode_test_return_suggestions(array $variables) { $suggestions = array(); if (!empty($variables['theme_hook_suggestions'])) { $suggestions = $variables['theme_hook_suggestions']; } if (!empty($variables['theme_hook_suggestion'])) { $suggestions[] = $variables['theme_hook_suggestion']; } return array_reverse($suggestions); }