Allows you to add some filters in smarty render. See the documentation about what is a Smarty filter : prefilter/postfilter or outputfilter
- Copy the module into
<thelia_root>/local/modules/
directory and be sure that the name of the module is SmartyFilter. - Activate it in your thelia administration panel
Add it in your main thelia composer.json file
composer require thelia/smarty-filter-module:~1.0
In Tools menu click on SmartyFilter. You just have to activate the filters you want.
Don't forget to clean your cache after you activate or deactivate filters.
You can add your filter in others module and use this module to integrate it. There are 3 steps to check.
First create a class with a public method named filter. Add your filter in it.
Exemple :
class EmailFilter
{
public function filter($tpl_output, $smarty)
{
$tpl_output =
preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!',
'$1%40$2', $tpl_output);
return $tpl_output;
}
}
Declare your service in the config.xml with one of the follow tags :
- thelia.parser.register_pre_filter
- thelia.parser.register_post_filter
- thelia.parser.register_output_filter
Exemple :
<service id="smartyfilter.filter.email" class="SmartyFilter\Filter\EmailFilter" >
<tag name="thelia.parser.register_output_filter"/>
</service>
To add the filter in the database ( and activate it ) you have to create a configuration file name smarty-filter.xml and your configuration in it as the exemple :
<?xml version="1.0" encoding="UTF-8" ?>
<smartyfilters xmlns="urn:thelia:module:smarty-filter">
<smartyfilter code="smartyfilter.filter.email">
<descriptive locale="fr_FR">
<title>EmailFilter</title>
<description>Filtre pour sécurisation des emails</description>
<type>output</type>
</descriptive>
</smartyfilter>
</smartyfilters>
[smarty_filter]
Argument | Description |
---|---|
id | filter by on or more ID |
filtertype | filter by one or more type ( pre, post or output) |
order | order the result (alpha, alpha-reverse, random , given_id ) |
Variable | Description |
---|---|
$ID | filter's ID |
$IS_TRANSLATED | check translation for the filter |
$LOCALE | the locale |
$TITLE | title string |
$DESCRIPTION | description string |
$ACTIVATE | boolean to check filter enabled or not |
$TYPE | filter type ( pre, post, output) |
{loop name="smarty_filter" type="smarty_filter"}
<tr>
<td class="object-title">
{$TITLE}
</td>
<td class="object-title">
{$DESCRIPTION}
</td>
<td>
{$CODE}
</td>
<td>
{$TYPE}
</td>
<td class="actions">
<div class="btn-group">
<div class="make-switch switch-small module-activation" data-id="{$ID}"
data-on="success" data-off="danger"
data-on-label="<i class='glyphicon glyphicon-ok-circle'></i>"
data-off-label="<i class='glyphicon glyphicon-remove-circle'></i>">
<input type="checkbox" {if $ACTIVATE}checked{/if}>
</div>
</div>
</td>
</tr>
{/loop}