function hook_preprocess
Same name in other branches
- 7.x modules/system/theme.api.php \hook_preprocess()
- 9 core/lib/Drupal/Core/Render/theme.api.php \hook_preprocess()
- 8.9.x core/lib/Drupal/Core/Render/theme.api.php \hook_preprocess()
- 11.x 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
5 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 in core/
includes/ theme.inc - Adds a default set of helper variables for preprocessors and templates.
- 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 558
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';
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.