rareloop / primer-template-engine-twig
Twig template engine for Primer
Installs: 4 265
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 7
Forks: 0
Open Issues: 3
Requires
- php: >=7.0
- twig/twig: ^2.0.0
Requires (Dev)
- phpunit/phpunit: 5.*
- rareloop/primer-core: 2.0.*
This package is auto-updated.
Last update: 2024-12-12 05:03:50 UTC
README
A template engine for Primer that uses Twig rather than the deafult (Handlebars).
Installation
-
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.
Usage
Including patterns within one another
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.
Extending Templates
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, ]);
Twig Template Cache
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, ));
Custom Events
Most of the Primer events are still available, this package adds a few engine specific events too: