daun / template-engine-latte
ProcessWire module adding Latte to the TemplateEngineFactory
Installs: 1 313
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 3
Forks: 2
Open Issues: 0
Type:processwire-module
pkg:composer/daun/template-engine-latte
Requires
- php: >=8.0
- composer/installers: ~1.0
- latte/latte: ^3.0
- wanze/template-engine-factory: ^2.0
README
A ProcessWire module adding Latte to the TemplateEngineFactory.
This module version uses Latte 3, which comes with breaking changes in how tags/macros are
defined. If you need to keep using Latte 2, stick with major version ^1.0 of this module. Learn more about
the migration to Latte 3 and
upgrading macros to tags.
Requirements
- ProcessWire
3.0or newer - TemplateEngineFactory
2.0or newer - PHP
8.0or newer - Composer
Installation
Execute the following command in the root directory of your ProcessWire installation:
composer require daun/template-engine-latte:^2.0
This will install the TemplateEngineLatte and TemplateEngineFactory modules in one step. Afterwards, don't forget to enable Latte as engine in the TemplateEngineFactory module's configuration.
ℹ️ This module includes test dependencies. If you are installing on production with
composer install, make sure to pass the--no-devflag to omit autoloading any unnecessary test dependencies!.
Configuration
The module offers the following configuration:
Template files suffixThe suffix of the Latte template files, defaults tolatte.Default layout fileLayout that all views will extend from unless overwritten.Provide ProcessWire API variables in Latte templatesAPI variables ($pages,$input,$config...) are accessible in Latte, e.g.{$config}for the config API variable.Simplified path resolutionEnable Blade-style dot syntax for directory traversal. See below.Auto refresh templates (recompile)Recompile templates whenever the source code changes.
Simplified Path Resolution
This option will enable two things:
- Allow dot syntax for directory traversal à la Blade.
- Prepend the base view directory to all paths, eliminating the need for endless
../in subdirectories.
Example
Both of these will resolve to site/templates/views/partials/navigation.latte:
- Normal resolution:
{include '../../partials/navigation.latte'} - Simplified resolution enabled:
{include 'partials.navigation'}
Extending Latte
It is possible to extend Latte after it has been initialized by the module. Hook the method
TemplateEngineLatte::initLatte to register custom tags, filters, functions etc.
Here is an example how you can use the provided hook to add custom macros and filters.
wire()->addHookAfter('TemplateEngineLatte::initLatte', function (HookEvent $event) { /** @var Latte\Engine */ $latte = $event->arguments('latte'); // Add filter $latte->addFilter('lower', function ($str) { return strtolower($str); }); // Add custom tags via extensions $latte->addExtension(new FooExtension); });
The above hook can be put in your
site/init.phpfile. If you prefer to use modules, put it into the module'sinit()method and make sure that the module is auto loaded.