comparison includes/theme.inc @ 11:589fb7c02327 6.5

Drupal 6.5
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:32:19 +0100
parents fff6d4c8c043
children 8b6c45761e01
comparison
equal deleted inserted replaced
10:6f15c9d74937 11:589fb7c02327
1 <?php 1 <?php
2 // $Id: theme.inc,v 1.415.2.9 2008/07/09 21:48:28 goba Exp $ 2 // $Id: theme.inc,v 1.415.2.12 2008/09/17 08:57:23 goba Exp $
3 3
4 /** 4 /**
5 * @file 5 * @file
6 * The theme system, which controls the output of Drupal. 6 * The theme system, which controls the output of Drupal.
7 * 7 *
8 * The theme system allows for nearly all output of the Drupal system to be 8 * The theme system allows for nearly all output of the Drupal system to be
9 * customized by user themes. 9 * customized by user themes.
10 * 10 *
11 * @see <a href="http://drupal.org/node/253">Theme system</a> 11 * @see <a href="http://drupal.org/node/171179">Theme guide</a>
12 * @see themeable 12 * @see themeable
13 */ 13 */
14 14
15 /** 15 /**
16 * @name Content markers 16 * @name Content markers
245 cache_clear_all('theme_registry', 'cache', TRUE); 245 cache_clear_all('theme_registry', 'cache', TRUE);
246 } 246 }
247 247
248 /** 248 /**
249 * Process a single invocation of the theme hook. $type will be one 249 * Process a single invocation of the theme hook. $type will be one
250 * of 'module', 'theme_engine' or 'theme' and it tells us some 250 * of 'module', 'theme_engine', 'base_theme_engine', 'theme', or 'base_theme'
251 * important information. 251 * and it tells us some important information.
252 * 252 *
253 * Because $cache is a reference, the cache will be continually 253 * Because $cache is a reference, the cache will be continually
254 * expanded upon; new entries will replace old entries in the 254 * expanded upon; new entries will replace old entries in the
255 * array_merge, but we are careful to ensure some data is carried 255 * array_merge, but we are careful to ensure some data is carried
256 * forward, such as the arguments a theme hook needs. 256 * forward, such as the arguments a theme hook needs.
312 $prefixes[] = 'template'; 312 $prefixes[] = 'template';
313 // Add all modules so they can intervene with their own preprocessors. This allows them 313 // Add all modules so they can intervene with their own preprocessors. This allows them
314 // to provide preprocess functions even if they are not the owner of the current hook. 314 // to provide preprocess functions even if they are not the owner of the current hook.
315 $prefixes += module_list(); 315 $prefixes += module_list();
316 } 316 }
317 elseif ($type == 'theme_engine') { 317 elseif ($type == 'theme_engine' || $type == 'base_theme_engine') {
318 // Theme engines get an extra set that come before the normally named preprocessors. 318 // Theme engines get an extra set that come before the normally named preprocessors.
319 $prefixes[] = $name .'_engine'; 319 $prefixes[] = $name .'_engine';
320 // The theme engine also registers on behalf of the theme. The theme or engine name can be used. 320 // The theme engine also registers on behalf of the theme. The theme or engine name can be used.
321 $prefixes[] = $name; 321 $prefixes[] = $name;
322 $prefixes[] = $theme; 322 $prefixes[] = $theme;
379 _theme_process_registry($cache, $module, 'module', $module, drupal_get_path('module', $module)); 379 _theme_process_registry($cache, $module, 'module', $module, drupal_get_path('module', $module));
380 } 380 }
381 381
382 // Process each base theme. 382 // Process each base theme.
383 foreach ($base_theme as $base) { 383 foreach ($base_theme as $base) {
384 // If the theme uses a theme engine, process its hooks. 384 // If the base theme uses a theme engine, process its hooks.
385 $base_path = dirname($base->filename); 385 $base_path = dirname($base->filename);
386 if ($theme_engine) { 386 if ($theme_engine) {
387 _theme_process_registry($cache, $theme_engine, 'base_theme_engine', $base->name, $base_path); 387 _theme_process_registry($cache, $theme_engine, 'base_theme_engine', $base->name, $base_path);
388 } 388 }
389 _theme_process_registry($cache, $base->name, 'base_theme', $base->name, $base_path); 389 _theme_process_registry($cache, $base->name, 'base_theme', $base->name, $base_path);
955 } 955 }
956 956
957 /** 957 /**
958 * Render a system default template, which is essentially a PHP template. 958 * Render a system default template, which is essentially a PHP template.
959 * 959 *
960 * @param $file 960 * @param $template_file
961 * The filename of the template to render. 961 * The filename of the template to render. Note that this will overwrite
962 * anything stored in $variables['template_file'] if using a preprocess hook.
962 * @param $variables 963 * @param $variables
963 * A keyed array of variables that will appear in the output. 964 * A keyed array of variables that will appear in the output.
964 * 965 *
965 * @return 966 * @return
966 * The output generated by the template. 967 * The output generated by the template.
967 */ 968 */
968 function theme_render_template($file, $variables) { 969 function theme_render_template($template_file, $variables) {
969 extract($variables, EXTR_SKIP); // Extract the variables to a local namespace 970 extract($variables, EXTR_SKIP); // Extract the variables to a local namespace
970 ob_start(); // Start output buffering 971 ob_start(); // Start output buffering
971 include "./$file"; // Include the file 972 include "./$template_file"; // Include the template file
972 $contents = ob_get_contents(); // Get the contents of the buffer 973 $contents = ob_get_contents(); // Get the contents of the buffer
973 ob_end_clean(); // End buffering and discard 974 ob_end_clean(); // End buffering and discard
974 return $contents; // Return the contents 975 return $contents; // Return the contents
975 } 976 }
976 977