如何自动加载Smarty插件

19
我们有一款使用Smarty模板引擎的PHP脚本插件,可以在模板文件中使用{plugin_name}。但这需要确保每个模板文件上都存在该插件,问题是:是否有一种方法可以在脚本加载时自动加载此插件?
该脚本不是开源的,但Smarty和它的文件(如Smarty.class.php等)未加密。
编辑: 我只需要在模板文件加载之前自动加载一个Smarty插件(与数据库有少量交互),这是否可能/可行?这能否仅通过Smarty文件实现?(该脚本本身是加密的,但Smarty_Compiler.class.php、Smarty.class.php、Config_File.class.php和其他Smarty核心函数是开源的)。

你能具体一点吗?这个插件是做什么的? - Borgtex
1
如果插件在模板显示之前运行且不修改其内容,为什么不在调用模板之前直接在您的 PHP 文件中执行该函数呢? - Borgtex
@Borgtex 不一定,你可以在插件中使用 return ''; 返回空值,我们的函数正在执行一些与数据库相关的操作。 - Vladimir
这很重要,因为Smarty有不同类型的插件,比如前置过滤器、后置过滤器等等。无论如何...请参阅http://www.smarty.net/docs/en/plugins来了解更多相关内容。 - Borgtex
@Vladimir 你是在说预过滤器吗? - TAS
显示剩余8条评论
1个回答

2
"

这取决于您使用的Smarty版本。

使用Smarty 3,您可以执行以下操作:

"
$smarty = new Smarty();
$smarty->setTemplatesDir(....);
$smarty->addPluginsDir('/path/to/your/plugins');
... stuff.
$smarty->display('template.tpl');

请参考: https://www.smarty.net/docs/en/api.add.plugins.dir.tpl
在使用Smarty2时,您需要进行类似以下的操作 -
请参考:https://www.smarty.net/docsv2/en/api.register.function.tpl 或者将您的函数放入libs/plugins目录,并以正确的文件名和函数名命名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接