Mercurial > defr > drupal > core
diff includes/theme.inc @ 15:4347c45bb494 6.7
Drupal 6.7
author | Franck Deroche <webmaster@defr.org> |
---|---|
date | Tue, 23 Dec 2008 14:32:44 +0100 |
parents | 8b6c45761e01 |
children |
line wrap: on
line diff
--- a/includes/theme.inc Tue Dec 23 14:32:33 2008 +0100 +++ b/includes/theme.inc Tue Dec 23 14:32:44 2008 +0100 @@ -1,5 +1,5 @@ <?php -// $Id: theme.inc,v 1.415.2.13 2008/10/16 13:50:59 dries Exp $ +// $Id: theme.inc,v 1.415.2.17 2008/12/10 21:09:05 goba Exp $ /** * @file @@ -8,8 +8,7 @@ * The theme system allows for nearly all output of the Drupal system to be * customized by user themes. * - * @see <a href="http://drupal.org/node/171179">Theme guide</a> - * @see themeable + * @ingroup themeable */ /** @@ -261,6 +260,7 @@ * over how and when the preprocess functions are run. */ function _theme_process_registry(&$cache, $name, $type, $theme, $path) { + $result = array(); $function = $name .'_theme'; if (function_exists($function)) { $result = $function($cache, $type, $theme, $path); @@ -358,6 +358,26 @@ // Merge the newly created theme hooks into the existing cache. $cache = array_merge($cache, $result); } + + // Let themes have preprocess functions even if they didn't register a template. + if ($type == 'theme' || $type == 'base_theme') { + foreach ($cache as $hook => $info) { + // Check only if it's a template and not registered by the theme or engine. + if (!empty($info['template']) && empty($result[$hook])) { + if (!isset($info['preprocess functions'])) { + $cache[$hook]['preprocess functions'] = array(); + } + if (function_exists($name .'_preprocess')) { + $cache[$hook]['preprocess functions'][] = $name .'_preprocess'; + } + if (function_exists($name .'_preprocess_'. $hook)) { + $cache[$hook]['preprocess functions'][] = $name .'_preprocess_'. $hook; + } + // Ensure uniqueness. + $cache[$hook]['preprocess functions'] = array_unique($cache[$hook]['preprocess functions']); + } + } + } } /** @@ -747,6 +767,12 @@ $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']; + } } } } @@ -812,6 +838,12 @@ 'path' => dirname($file->filename), ); } + // Ensure that the pattern is maintained from base themes to its sub-themes. + // Each sub-theme will have their templates scanned so the pattern must be + // held for subsequent runs. + if (isset($cache[$hook]['pattern'])) { + $templates[$hook]['pattern'] = $cache[$hook]['pattern']; + } } $patterns = array_keys($files); @@ -1409,10 +1441,10 @@ * All other elements are treated as attributes of the list item element. * @param $title * The title of the list. + * @param $type + * The type of list to return (e.g. "ul", "ol") * @param $attributes * The attributes applied to the list element. - * @param $type - * The type of list to return (e.g. "ul", "ol") * @return * A string containing the list output. */