TemplateEngineMustache by blue-tomato

Mustache templates for the TemplateEngineFactory

TemplateEngineMustache

License: MIT ProcessWire 3

A ProcessWire module adding Mustache to the TemplateEngineFactory.

Requirements


  • ProcessWire 3.0 or newer
  • TemplateEngineFactory 2.0 or newer
  • PHP 7.0 or newer
  • Composer

The 1.x version of this module is available on the 1.x branch. Use this version if you still use TemplateEngineFactory 1.x.

Installation


Execute the following command in the root directory of your ProcessWire installation:

composer require blue-tomato/template-engine-mustache:^2.0

This will install the TemplateEngineMustache and TemplateEngineFactory modules in one step. Afterwards, don't forget to enable Mustache 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 Twig template files, defaults to mustache.
  • Provide ProcessWire API variables in Mustache templates API variables ($pages, $input, $config...) are accessible in Twig, e.g. {{ config }} for the config API variable.
  • Debug If enabled, Mustache outputs debug information.

Extending Mustache


It is possible to extend Mustache after it has been initialized by the module. Hook the method TemplateEngineMustache::initMustache to register custom functions, extensions, global variables, filters etc.

Here is an example how you can use the provided hook to attach a custom function.

wire()->addHookAfter('TemplateEngineMustache::initMustache', function (HookEvent $event) {
    /** @var \Mustache_Engine $mustache */
    $mustache = $event->arguments('mustache');

    $mustache->setHelpers([
			'myHelperFunction' => function($text) {
				return trim($text);
			}
		]);
});

// ... and then use it anywhere in a Mustache template:

{{#myHelperFunction}} {{someVariable}} {{/myHelperFunction}}

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.

Twitter updates

  • This week ProcessWire (3.0.175) gained the ability to maintain separate read-only and read-write database connections to optimize scalability, cost and performance. The post covers why this can be so valuable and how to configure it in ProcessWire— More
    2 April 2021
  • ProcessWire 3.0.174 core updates: improvements to the new path/URL hooks and more— More
    12 March 2021
  • ProcessWire 3.0.173 adds several new requested features and this post focuses on one of my favorites: the ability to hook into and handle ProcessWire URLs, independent of pages— More
    5 March 2021

Latest news

  • ProcessWire Weekly #361
    In the 361st issue of ProcessWire Weekly we'll take  closer look at a new third party module called Copy Markdown, and check out the latest weekly update from Ryan. Read on!
    Weekly.pw / 10 April 2021
  • ProcessWire 3.0.175 adds new database scalability options
    This week ProcessWire gained the ability to maintain separate read-only and read-write database connections to optimize scalability, cost and performance. The post covers why this can be so valuable and how to configure it in ProcessWire.
    Blog / 2 April 2021
  • Subscribe to weekly ProcessWire news

“…building with ProcessWire was a breeze, I really love all the flexibility the system provides. I can’t imagine using any other CMS in the future.” —Thomas Aull