blue-tomato / template-engine-smarty
ProcessWire module adding Smarty to the TemplateEngineFactory
Installs: 2 270
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 3
Forks: 1
Open Issues: 1
Type:processwire-module
pkg:composer/blue-tomato/template-engine-smarty
Requires
- php: >=7.0
- composer/installers: >=1.0
- smarty/smarty: >=4.1
README
A ProcessWire module adding Smarty to the TemplateEngineFactory.
Requirements
- ProcessWire
3.0or newer - TemplateEngineFactory
2.0or newer - PHP
7.0or newer - Composer
The
1.xversion of this module is available on the 1.x branch. Use this version if you still use TemplateEngineFactory1.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-devflag to omit autoloading any unnecessary test dependencies!.
Configuration
The module offers the following configuration:
Template files suffixThe suffix of the Smarty template files, defaults totpl.Provide ProcessWire API variables in Smarty templatesAPI variables ($pages,$input,$config...) are accessible in Smarty, e.g.{{ config }}for the config API variable.DebugIf enabled, Smarty outputs debug information.Compile CheckIf enabled, templates are recompiled whenever the source code changes.Error ReportingIf set tofalse, Smarty will silently ignore invalid variables (variables and or attributes/methods that do not exist) and replace them with anullvalue. When set totrue, Smarty throws an exception insteadEscape HTMLIf 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.phpfile. If you prefer to use modules, put it into the module'sinit()method and make sure that the module is auto loaded.