thelia / smarty-filter-module
v1.3
2015-06-22 14:40 UTC
Requires
- thelia/installer: ~1.1
This package is auto-updated.
Last update: 2024-09-14 21:51:16 UTC
README
允许你在smarty渲染中添加一些过滤器。请参阅有关Smarty过滤器的文档: prefilter/postfilter 或 outputfilter
安装
手动
- 将模块复制到
<thelia_root>/local/modules/
目录中,并确保模块的名称为SmartyFilter。 - 在thelia管理面板中激活它
Composer
将其添加到您的main thelia composer.json文件中
composer require thelia/smarty-filter-module:~1.0
用法
激活过滤器
在工具菜单中点击SmartyFilter。您只需激活您想要的过滤器。
激活或停用过滤器后,请勿忘记清理您的缓存。
添加您自己的过滤器
您可以在其他模块中添加您的过滤器并使用此模块来集成它。需要检查3个步骤。
服务
首先创建一个具有名为filter的公共方法的类。将您的过滤器添加到其中。
示例
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;
}
}
配置服务
在config.xml中声明您的服务,使用以下标签之一:
- thelia.parser.register_pre_filter
- thelia.parser.register_post_filter
- thelia.parser.register_output_filter
示例
<service id="smartyfilter.filter.email" class="SmartyFilter\Filter\EmailFilter" >
<tag name="thelia.parser.register_output_filter"/>
</service>
配置文件
为了将过滤器添加到数据库中(并激活它),您需要创建一个名为smarty-filter.xml的配置文件,并在其中添加配置,如示例所示。
<?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]
输入参数
输出参数
示例
{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}