有没有办法为Smarty自定义函数使用变量名?

时间:2015-05-21 14:48:43

标签: templates smarty3

我们正在为Smarty使用自定义功能。由于我们使用单独的子模板构建大模板,因此我们遇到了一个问题:有时在页面中多次使用子模板。因此用户定义的smarty函数被声明两次。

我们尝试为

这样的函数使用变量名
{function name = menu_{$object_key}} 
... 
{/function} 

但它不起作用。我们做错了还是没有办法做到这一点?有任何想法吗?

提前致谢。

PS。由于我们结构的复杂性,跟踪“如果之前已宣布某个功能”是不可能的(或至少太难)。

1 个答案:

答案 0 :(得分:0)

如果您想宣布您的功能一次,可能的解决方案是:

  1. 使用您在其中使用的自定义函数创建单独的模板:
  2. <强> functions.tpl

        {function name = menu} 
        ... 
        {/function} 
    
        {function name = another_func} 
        ... 
        {/function} 
    
    1. 然后将其包含在主模板中:
    2. <强> main.tpl

          {include file='functions.tpl'}
      
      1. 在主模板和所有子模板中调用您的函数
      2. <强> main.tpl

            {menu data=$menu}
            {include file='sub_template.tpl'}
        

        <强> sub_template.tpl

            {another_func}