Как переопределить theme функцию в Drupal

Для того, чтобы переопределить theme фунцкию необходимо имплементировать хук hook_theme_registry_alter():

/**
 * Implements hook_theme_registry_alter().
 */
function example_theme_registry_alter(&$theme_registry) {
  // В массиве $theme_registry ключом является название theme функции, определяемое в hook_theme().
  // Массив содержит информацию, возращаемую hook_theme(), а так же дополнительные свойства, добавленные _theme_process_registry().

  // Переопределяем функцию theme_user_signature на theme_example_user_signature.
  $theme_registry['user_signature']['function'] = 'theme_example_user_signature';
}

Не забываем чистить кеш, всякий раз, как переопределили функцию.

Комментарии (3)

Аватар пользователя Антон
Антон

Спасибо за статьи, а не могли бы вы пояснить, для чего может потребоваться переопределять theme-функцию?

Аватар пользователя Benya
Benya

Например, если не устраивает как работает эта функция по умолчанию, хороший пример - это обычный пагинатор (на многих сайтах его изменяют). Еще один хороший пример на мой взгляд, это функция theme_file_icon(), которая отображает иконки файлов (иконки по умолчанию чаще всего никак не вяжутся с дизайном), поэтому приходится переопределять ее и подсовывать нормальные иконки.

Аватар пользователя Анон
Анон

Спасибо, очень интересная инфа.