function _theme_render_template_debug
_theme_render_template_debug($template_function, $template_file, $variables, $extension)
Renders a template for any engine.
Includes the possibility to get debug output by setting the theme_debug variable to TRUE.
Parameters
string $template_function: The function to call for rendering the template.
string $template_file: The filename of the template to render.
array $variables: A keyed array of variables that will appear in the output.
string $extension: The extension used by the theme engine for template files.
Return value
string The output generated by the template including debug information.
File
- includes/theme.inc, line 1549
- The theme system, which controls the output of Drupal.
Code
function _theme_render_template_debug($template_function, $template_file, $variables, $extension) { $output = array( 'debug_prefix' => '', 'debug_info' => '', 'rendered_markup' => call_user_func($template_function, $template_file, $variables), 'debug_suffix' => '', ); $output['debug_prefix'] .= "\n\n<!-- THEME DEBUG -->"; $output['debug_prefix'] .= "\n<!-- CALL: theme('" . check_plain($variables['theme_hook_original']) . "') -->"; // If there are theme suggestions, reverse the array so more specific // suggestions are shown first. if (!empty($variables['theme_hook_suggestions'])) { $variables['theme_hook_suggestions'] = array_reverse($variables['theme_hook_suggestions']); } // Add debug output for directly called suggestions like // '#theme' => 'comment__node__article'. if (strpos($variables['theme_hook_original'], '__') !== FALSE) { $derived_suggestions[] = $hook = $variables['theme_hook_original']; while ($pos = strrpos($hook, '__')) { $hook = substr($hook, 0, $pos); $derived_suggestions[] = $hook; } // Get the value of the base hook (last derived suggestion) and append it // to the end of all theme suggestions. $base_hook = array_pop($derived_suggestions); $variables['theme_hook_suggestions'] = array_merge($derived_suggestions, $variables['theme_hook_suggestions']); $variables['theme_hook_suggestions'][] = $base_hook; } if (!empty($variables['theme_hook_suggestions'])) { $current_template = basename($template_file); $suggestions = $variables['theme_hook_suggestions']; // Only add the original theme hook if it wasn't a directly called // suggestion. if (strpos($variables['theme_hook_original'], '__') === FALSE) { $suggestions[] = $variables['theme_hook_original']; } foreach ($suggestions as &$suggestion) { $template = strtr($suggestion, '_', '-') . $extension; $prefix = ($template == $current_template) ? 'x' : '*'; $suggestion = $prefix . ' ' . $template; } $output['debug_info'] .= "\n<!-- FILE NAME SUGGESTIONS:\n " . check_plain(implode("\n ", $suggestions)) . "\n-->"; } $output['debug_info'] .= "\n<!-- BEGIN OUTPUT from '" . check_plain($template_file) . "' -->\n"; $output['debug_suffix'] .= "\n<!-- END OUTPUT from '" . check_plain($template_file) . "' -->\n\n"; return implode('', $output); }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/includes!theme.inc/function/_theme_render_template_debug/7.x