TemplateEngineSmarty by wanze

This module adds the Smarty template engine to the TemplateEngineFactory

TemplateEngineSmarty

License: MIT ProcessWire 3

A ProcessWire module adding Smarty 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-smarty:^2.0

This will install the TemplateEngineSmarty and TemplateEngineFactory modules in one step. Afterwards, don't forget to enable Smarty 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 Smarty template files, defaults to tpl.
  • Provide ProcessWire API variables in Smarty templates API variables ($pages, $input, $config...) are accessible in Smarty, e.g. {{ config }} for the config API variable.
  • Debug If enabled, Smarty outputs debug information.
  • Compile Check If enabled, templates are recompiled whenever the source code changes.
  • Error Reporting If set to false, Smarty will silently ignore invalid variables (variables and or attributes/methods that do not exist) and replace them with a null value. When set to true, Smarty throws an exception instead
  • Escape HTML If enabled, templates will auto-escape variables. If you are using ProcessWire textformatters to escape field values, do not enable this feature.

Extending Smarty


It is possible to extend Smarty after it has been initialized by the module. Hook the method TemplateEngineSmarty::initSmarty 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.

function foo_function($params, $smarty) {
  return 'bar';
};

wire()->addHookAfter('TemplateEngineSmarty::initSmarty', function (HookEvent $event) {
    /** @var \Smarty $smarty */
    $smarty = $event->arguments('smarty');

    $smarty->registerPlugin("function", "foo", "foo_function");
});

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

{foo}

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

  • New post: Multi-language field translation export/import — In this post we cover the details of a new module that enables export and import capabilities for multi-language fields in ProcessWire… More
    5 August 2022
  • Weekly update, July 29: Continuing upgrades to ProcessWire’s comments system and FormBuilder, along with a working example—More
    29 July 2022
  • Weekly update for July 22– Looking back at what web development was like in the year 2000. Plus some more discussion on the path from CKEditor 4 to CkEditor 5 in ProcessWire: More
    22 July 2022

Latest news

  • ProcessWire Weekly #430
    In the 430th issue of ProcessWire Weekly we're going to check out some brand new third party modules, a new site of the week, and more. Read on!
    Weekly.pw / 7 August 2022
  • Multi-language field translation export/import
    In this post we cover the details of a new module that enables export and import capabilities for multi-language fields in ProcessWire.
    Blog / 5 August 2022
  • Subscribe to weekly ProcessWire news

“Indeed, if ProcessWire can be considered as a CMS in its own right, it also offers all the advantages of a CMF (Content Management Framework). Unlike other solutions, the programmer is not forced to follow the proposed model and can integrate his/her ways of doing things.” —Guy Verville, Spiria Digital Inc.