Как переопределить функцию темизации в своём модуле

Есть два способа переопределения функций темизаций в модуле. Первый, это реализация хука hook_theme:

/**
 * Реализация hook_theme()
 * Переопределение функции theme_breadcrumb()
 */
function mymodule_theme() {
  return array(
    'breadcrumb' => array(
      'function' => 'mymodule_breadcrumb',
      'arguments' => array('breadcrumb' => NULL),
    ),
  );
}
 
/**
 * Функция темизации хлебных крошек
 */
function mymodule_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<div class="breadcrumb">' . implode(' → ', $breadcrumb) . '</div>';
  }
}

этот код будет работать только если функция theme_breadcrumb не переопределена в template.php или в модуле с бОльшим весом.

Следующий код будет работать даже если функция переопределена в template.php

/**
 * Реализация hook_theme_registry_alter()
 * Переопределение функции theme_breadcrumb()
 */
function mymodule_theme_registry_alter(&$theme_registry) {
  $theme_registry['breadcrumb']['function'] = 'mymodule_breadcrumb';
}
 
/**
 * Функция темизации хлебных крошек
 */
function mymodule_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<div class="breadcrumb">' . implode(' → ', $breadcrumb) . '</div>';
  }
}

Написанное актуально для
Drupal 6.x
Теги:
темизация
Добавлено: 27 Июля 2018 08:10:46 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...