如何自动加载smarty插件


How to auto load a smarty plugin

我们有一个PHP脚本插件与Smarty模板引擎,

它可以在模板文件中使用{plugin_name},但这需要确保在每个模板文件中都有,问题是:

是否有一种方法可以在脚本加载时自动加载此插件?

脚本不是开源的,但Smarty和它的文件(如Smarty.class.php等)是不加密的。

编辑

我所需要做的就是在模板文件加载之前自动加载一个Smarty插件(它与数据库有很小的交互),这是可能的/可以实现的吗?(脚本本身是加密的,但Smarty_Compiler.class.php, smarty .class.php, Config_File.class.php和其他smarty核心函数是开源的)

这取决于你使用的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目录中,并使用正确的文件名和函数名…