Skip to content

Instantly share code, notes, and snippets.

@bastianallgeier
Last active May 7, 2016 17:44
Show Gist options
  • Save bastianallgeier/edf33e468e3c022e4772 to your computer and use it in GitHub Desktop.
Save bastianallgeier/edf33e468e3c022e4772 to your computer and use it in GitHub Desktop.
<?php
kirby::$handlers['template'] = function($kirby, $page, $data = array()) {
require_once(__DIR__ . DS . 'vendor' . DS . 'autoload.php');
$loader = new Twig_Loader_Filesystem($kirby->roots()->templates());
$twig = new Twig_Environment($loader, array(
'cache' => false
));
$data = array_merge(tpl::$data, array(
'kirby' => $kirby,
'site' => $kirby->site(),
'pages' => $kirby->site()->children(),
'page' => $page
), $page->templateData(), $data, $kirby->controller($page, $data));
return $twig->render(basename($page->templateFile()), $data);
};
@lehni
Copy link

lehni commented Jul 24, 2015

This looks good, but why not leave the creation of the $data object to the caller? This will probably always be the same anyway, and is already defined here:

https://github.com/getkirby/kirby/blob/master/kirby.php#L666

Also, why is tpl::$data overridden on each call to $kirby->template()?

@fvsch
Copy link

fvsch commented May 7, 2016

@shiftsave You might not need it anymore after close to one year, but for the record I made a Twig template component for Kirby 2.3: https://github.com/fvsch/kirby-twig
(And for other PHP templating engines, I guess it’s an okay enough example to help get people started.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment