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

16.01.2011

Есть два способа переопределения функций темизаций в модуле.

Способ 1

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

/**
 * Implements hook_theme().
 */
function mymodule_theme() {
  return array(
    // Переопределение функции theme_breadcrumb()
    'breadcrumb' => array(
      'function' => 'mymodule_breadcrumb',
      'arguments' => array('breadcrumb' => NULL),
    ),
  );
}

/**
 * Override theme_breadcrumb().
 */
function mymodule_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<div class="breadcrumb">' . implode(' → ', $breadcrumb) . '</div>';
  }
}

Способ 2

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

/**
 * Implements hook_theme_registry_alter().
 */
function mymodule_theme_registry_alter(&$theme_registry) {
  // Переопределение функции theme_breadcrumb()
  $theme_registry['breadcrumb']['function'] = 'mymodule_breadcrumb';
}

/**
 * Override theme_breadcrumb().
 */
function mymodule_breadcrumb($breadcrumb) {
  if (!empty($breadcrumb)) {
    return '<div class="breadcrumb">' . implode(' → ', $breadcrumb) . '</div>';
  }
}
Написанное актуально для
Drupal 6
Похожие записи

Добавить комментарий