在Smarty中,可以通过这种方式注册插件:
$smarty->registerPlugin("function","date_now", "print_current_date");
function print_current_date($params, $smarty)
{
if(empty($params["format"])) {
$format = "%b %e, %Y";
} else {
$format = $params["format"];
}
return strftime($format,time());
}
Run Code Online (Sandbox Code Playgroud)
参考:https://www.smarty.net/docs/en/api.register.plugin.tpl
但我正在寻找一种方法,我可以直接传递函数作为参数.我怎么能在PHP/Smarty中做到这一点?
例如:
$smarty->registerPlugin("function","date_now", function ($params, $smarty) {
if(empty($params["format"])) {
$format = "%b %e, %Y";
} else {
$format = $params["format"];
}
return strftime($format,time());
});
Run Code Online (Sandbox Code Playgroud) 我正在创建一个基于 PrestaShop (v 1.6) 的商店,我想注册我的自定义修饰符插件,以便可以从任何模板(包括前台和后台模板)访问。
问题是注册码放在哪里?
现在我使用工具类覆盖来添加函数来处理修饰符(这是在商店特定功能的情况下可以接受的做法,afaik),并使用smarty.config.inc.php来注册插件(因为所有 PrestaShop 插件都在这里注册),但是这个文件包含一个关于“不要直接修改文件”的警告,据我所知,当我升级 PrestaShop 时会被覆盖。
所以,问题是在哪里注册我的插件以确保我的代码不会被覆盖?
提前致谢。