我们正在为Smarty使用自定义功能。由于我们使用单独的子模板构建大模板,因此我们遇到了一个问题:有时在页面中多次使用子模板。因此用户定义的smarty函数被声明两次。
我们尝试为
这样的函数使用变量名{function name = menu_{$object_key}}
...
{/function}
但它不起作用。我们做错了还是没有办法做到这一点?有任何想法吗?
提前致谢。
PS。由于我们结构的复杂性,跟踪“如果之前已宣布某个功能”是不可能的(或至少太难)。
答案 0 :(得分:0)
如果您想宣布您的功能一次,可能的解决方案是:
<强> functions.tpl 强>
{function name = menu}
...
{/function}
{function name = another_func}
...
{/function}
<强> main.tpl 强>
{include file='functions.tpl'}
<强> main.tpl 强>
{menu data=$menu}
{include file='sub_template.tpl'}
<强> sub_template.tpl 强>
{another_func}