drupal_find_theme_functions

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/theme.inc, строка 755

Версии
6
drupal_find_theme_functions($cache, $prefixes)

Find overridden theme functions. Called by themes and/or theme engines to easily discover theme functions.

Параметры

$cache The existing cache of theme hooks to test against.

$prefixes An array of prefixes to test, in reverse order of importance.

Возвращаемое значение

$templates The functions found, suitable for returning from hook_theme;

▾ 2 функции вызывают drupal_find_theme_functions()

chameleon_theme in themes/chameleon/chameleon.theme
Реализация hook_theme. Автоматическое обнаружение функций темы.
phptemplate_theme in themes/engines/phptemplate/phptemplate.engine
Implementation of hook_theme to tell Drupal what templates the engine and the current theme use. The $existing argument will contain hooks pre-defined by Drupal so that we can use that information if we need to.

Код

<?php
function drupal_find_theme_functions($cache, $prefixes) {
  $templates = array();
  $functions = get_defined_functions();

  foreach ($cache as $hook => $info) {
    foreach ($prefixes as $prefix) {
      if (!empty($info['pattern'])) {
        $matches = preg_grep('/^'. $prefix .'_'. $info['pattern'] .'/', $functions['user']);
        if ($matches) {
          foreach ($matches as $match) {
            $new_hook = str_replace($prefix .'_', '', $match);
            $templates[$new_hook] = array(
              'function' => $match,
              'arguments' => $info['arguments'],
              'original hook' => $hook,
            );
          }
        }
      }
      if (function_exists($prefix .'_'. $hook)) {
        $templates[$hook] = array(
          'function' => $prefix .'_'. $hook,
        );
        // Ensure that the pattern is maintained from base themes to its sub-themes.
        // Each sub-theme will have their functions scanned so the pattern must be
        // held for subsequent runs.
        if (isset($info['pattern'])) {
          $templates[$hook]['pattern'] = $info['pattern'];
        }
      }
    }
  }

  return $templates;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему