TemplateEngineLatte by daun

Latte templates for the TemplateEngineFactory

TemplateEngineLatte

Build Status StyleCI License: MIT ProcessWire 3

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.0 or newer
  • TemplateEngineFactory 2.0 or newer
  • PHP 8.0 or 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-dev flag to omit autoloading any unnecessary test dependencies!.

Configuration


The module offers the following configuration:

  • Template files suffix The suffix of the Latte template files, defaults to latte.
  • Default layout file Layout that all views will extend from unless overwritten.
  • Provide ProcessWire API variables in Latte templates API variables ($pages, $input, $config...) are accessible in Latte, e.g. {$config} for the config API variable.
  • Simplified path resolution Enable 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');
    $compiler = $latte->getCompiler();

    // 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.php file. If you prefer to use modules, put it into the module's init() method and make sure that the module is auto loaded.

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Latest news

  • ProcessWire Weekly #549
    In the 549th issue of ProcessWire Weekly we’re going to check out the latest core updates, highlight one older yet still very relevant third party module, and more. Read on!
    Weekly.pw / 17 November 2024
  • Custom Fields Module
    This week we look at a new ProFields module named Custom Fields. This module provides a way to rapidly build out ProcessWire fields that contain any number of subfields/properties within them.
    Blog / 30 August 2024
  • Subscribe to weekly ProcessWire news

“We chose ProcessWire because of its excellent architecture, modular extensibility and the internal API. The CMS offers the necessary flexibility and performance for such a complex website like superbude.de. ProcessWire offers options that are only available for larger systems, such as Drupal, and allows a much slimmer development process.” —xport communication GmbH