diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php index 4c95a00..bdf8e6c 100644 --- a/core/modules/system/system.api.php +++ b/core/modules/system/system.api.php @@ -1201,6 +1201,47 @@ function hook_template_preprocess_default_variables_alter(&$variables) { } /** + * Declares a template file extension to be used with a theme engine. + * + * This hook is used in a theme engine implementation in the format of + * ENGINE_extension(). + * + * @return string + * The file extension the theme engine will recognize. + */ +function hook_extension() { + // Extension for template base names in Twig + return '.html.twig'; +} + +/** + * Renders a template using the theme engine. + * + * This hook is used in a theme engine implementation in the format of + * ENGINE_render_template(). It gets passed a template name and an array of + * variables and returns a string containing the rendered template. + * + * @param string template_file + * The relative path to the template to be rendered including its extension in + * the format 'path/to/TEMPLATE_NAME.EXT'. The path should be relative to the + * drupal root directory. + * @param array $variables + * A keyed array of variables that are available for composing the output. The + * theme engine is responsible for passing all the variables to the template. + * If all or just a subset of those variables are used in the template may + * vary depending on the code in the template. + * + * @return string + * The output generated from the template. In most cases this will be a string + * containing HTML markup. + */ +function hook_render_template($template_file, $variables) { + $twig_service = \Drupal::service('twig'); + + return $twig_service->loadTemplate($template_file)->render($variables); +} + +/** * Log an event message. * * This hook allows modules to route log events to custom destinations, such as diff --git a/core/themes/engines/phptemplate/phptemplate.engine b/core/themes/engines/phptemplate/phptemplate.engine index 0521092..a4eee49 100644 --- a/core/themes/engines/phptemplate/phptemplate.engine +++ b/core/themes/engines/phptemplate/phptemplate.engine @@ -31,6 +31,8 @@ function phptemplate_extension() { } /** + * Implements hook_render_template(). + * * Renders a system default template, which is essentially a PHP template. * * @param $template_file diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine index d596715..3816343 100644 --- a/core/themes/engines/twig/twig.engine +++ b/core/themes/engines/twig/twig.engine @@ -18,6 +18,9 @@ function twig_theme($existing, $type, $theme, $path) { /** * Implements hook_extension(). + * + * @return string + * The file extension the Twig theme engine will recognize */ function twig_extension() { return '.html.twig'; @@ -31,6 +34,8 @@ function twig_init(Extension $theme) { } /** + * Implements hook_render_template(). + * * Renders a Twig template. * * If the Twig debug setting is enabled, HTML comments including _theme() call @@ -41,7 +46,7 @@ function twig_init(Extension $theme) { * @param $variables * A keyed array of variables that will appear in the output. * - * @return + * @return string * The output generated by the template, plus any debug information. */ function twig_render_template($template_file, $variables) {