A template engine for Primer that uses Twig rather than the deafult (Handlebars).
-
In the
composer.jsonin your Primer install, replace:"rareloop/primer-template-engine-handlebars": "dev-master"
with:
"rareloop/primer-template-engine-twig": "1.0.*"
-
Run
composer update. -
Modify your
bootstrap/start.phpfile and change thePrimer::startcall to include thetemplateClasse.g.$primer = Primer::start(array( 'basePath' => __DIR__.'/..', 'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class, ));
-
Replace all
.hbsfiles in your patterns and views with `.twig' files. If you don't want to do this by hand you can download the base Primer files in Twig format from this repo.
Any pattern can be included within another by using the standard include syntax, e.g.
<div class="sub-pattern">
{% include 'elements/forms/input' %}
</div>More information on using {% include %} and manipulating the passed in context can be found on the Twig website.
By default, Primer will wrap all page Templates with a common View (views/template.twig). When using {% extends %} this wrapping is sometimes undesirable, in such circumstances you can disable this behaviour in a couple of ways.
-
On a per page Template basis. Add the following to the Templates
data.jsonfile:{ "primer": { "view": "custom-view" } } -
Site wide. Add
wrapTemplate: falseto thePrimer::startcall inbootstrap/start.php, e.g.$primer = Primer::start([ 'basePath' => __DIR__.'/..', 'templateClass' => TwigTemplateEngine::class, 'wrapTemplate' => false, ]);
By default Primer uses a directory called cache inside the project root for cache files. To change this to somewhere else you can set an alternative when you start Primer in bootstrap/start.php, e.g.
$primer = Primer::start(array(
'basePath' => __DIR__.'/..',
'cachePath' => 'absolute/path/to/cache/dir',
'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class,
));Most of the Primer events are still available, this package adds a few engine specific events too:
-
Called when the Twig engine is created. Useful for registering custom helpers with the Twig engine.
Event::listen('twig.init', function ($twig) { });