Add Pico::getTwigTemplate()

This commit is contained in:
Daniel Rudolf 2017-02-05 20:20:26 +01:00
parent 9b7523b9e8
commit 5429a3a932
No known key found for this signature in database
GPG key ID: A061F02CD8DE4538

View file

@ -236,11 +236,19 @@ class Pico
/** /**
* Variables passed to the twig template * Variables passed to the twig template
* *
* @see Pico::getTwigVariables * @see Pico::getTwigVariables()
* @var array|null * @var array|null
*/ */
protected $twigVariables; protected $twigVariables;
/**
* Name of the Twig template to render
*
* @see Pico::getTwigTemplate()
* @var string|null
*/
protected $twigTemplate;
/** /**
* Constructs a new Pico instance * Constructs a new Pico instance
* *
@ -403,20 +411,10 @@ class Pico
// render template // render template
$this->twigVariables = $this->getTwigVariables(); $this->twigVariables = $this->getTwigVariables();
if (!empty($this->meta['template'])) { $this->twigTemplate = $this->getTwigTemplate();
$templateName = $this->meta['template']; $this->triggerEvent('onPageRendering', array(&$this->twig, &$this->twigVariables, &$this->twigTemplate));
} else {
$templateName = 'index';
}
if (file_exists($this->getThemesDir() . $this->getConfig('theme') . '/' . $templateName . '.twig')) {
$templateName .= '.twig';
} else {
$templateName .= '.html';
}
$this->triggerEvent('onPageRendering', array(&$this->twig, &$this->twigVariables, &$templateName)); $output = $this->twig->render($this->twigTemplate, $this->twigVariables);
$output = $this->twig->render($templateName, $this->twigVariables);
$this->triggerEvent('onPageRendered', array(&$output)); $this->triggerEvent('onPageRendered', array(&$output));
return $output; return $output;
@ -1575,6 +1573,28 @@ class Pico
); );
} }
/**
* Returns the name of the Twig template to render
*
* @return string template name
*/
protected function getTwigTemplate()
{
if ($this->twigTemplate !== null) {
return $this->twigTemplate;
}
$templateName = $this->meta['template'] ?: 'index';
if (file_exists($this->getThemesDir() . $this->getConfig('theme') . '/' . $templateName . '.twig')) {
$templateName .= '.twig';
} else {
$templateName .= '.html';
}
return $templateName;
}
/** /**
* Returns the base URL of this Pico instance * Returns the base URL of this Pico instance
* *