A template engine for Primer that uses Twig rather than the deafult (Handlebars).
-
In the
composer.json
in 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.php
file and change thePrimer::start
call to include thetemplateClass
e.g.$primer = Primer::start(array( 'basePath' => __DIR__.'/..', 'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class, ));
-
Replace all
.hbs
files 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.json
file:{ "primer": { "view": "custom-view" } }
-
Site wide. Add
wrapTemplate: false
to thePrimer::start
call 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) { });