Same name and namespace in other branches
  1. 6.x developer/hooks/core.php \hook_preprocess()
  2. 7.x modules/system/theme.api.php \hook_preprocess()
  3. 8.9.x core/lib/Drupal/Core/Render/theme.api.php \hook_preprocess()
  4. 9 core/lib/Drupal/Core/Render/theme.api.php \hook_preprocess()

Preprocess theme variables for templates.

This hook allows modules to preprocess theme variables for theme templates. hook_preprocess_HOOK() can be used to preprocess variables for a specific theme hook.

For more detailed information, see the Theme system overview topic.

Parameters

$variables: The variables array (modify in place).

$hook: The name of the theme hook.

Related topics

4 functions implement hook_preprocess()

Note: this list is generated by pattern matching, so it may include some functions that are not actually implementations of this hook.

common_test_preprocess in core/modules/system/tests/modules/common_test/common_test.module
Implements MODULE_preprocess().
contextual_preprocess in core/modules/contextual/contextual.module
Implements hook_preprocess().
search_langcode_test_search_preprocess in core/modules/search/tests/modules/search_langcode_test/search_langcode_test.module
Implements hook_search_preprocess().
template_preprocess_theme_test_deprecations_preprocess in core/modules/system/tests/modules/theme_test/theme_test.module
Implements template_preprocess_HOOK() for theme_test_deprecations_preprocess.

File

core/lib/Drupal/Core/Render/theme.api.php, line 557
Hooks and documentation related to the theme and render system.

Code

function hook_preprocess(&$variables, $hook) {
  static $hooks;

  // Add contextual links to the variables, if the user has permission.
  if (!\Drupal::currentUser()
    ->hasPermission('access contextual links')) {
    return;
  }
  if (!isset($hooks)) {
    $hooks = \Drupal::service('theme.registry')
      ->get();
  }

  // Determine the primary theme function argument.
  if (isset($hooks[$hook]['variables'])) {
    $keys = array_keys($hooks[$hook]['variables']);
    $key = $keys[0];
  }
  else {
    $key = $hooks[$hook]['render element'];
  }
  if (isset($variables[$key])) {
    $element = $variables[$key];
  }
  if (isset($element) && is_array($element) && !empty($element['#contextual_links'])) {
    $variables['title_suffix']['contextual_links'] = contextual_links_view($element);
    if (!empty($variables['title_suffix']['contextual_links'])) {
      $variables['attributes']['class'][] = 'contextual-links-region';
    }
  }
}