包含带变量的tpl文件(Smarty)

时间:2012-12-11 06:26:24

标签: smarty

我有一个“links.tpl”文件,其中包含许多变量的行,如下面的

{assign var=link_main value="index.php"}    
{assign var=link_login value="?a=login"}  

但是当我使用{include file="file.tpl"}在home.tpl中包含此文件时 变量{$link_main}, {$link_login}不包括在内

我将{assign var=link_main value="index.php"}放在home.tpl中,但它不起作用,但不是来自包含文件

我尝试将scope=global添加到变量和父级以包含但没有发生任何事情

我尝试了最后几个小时找到解决方案,感谢任何帮助

2 个答案:

答案 0 :(得分:3)

你在做什么应该工作。在我的Mac上测试:

文件test / testInclude.tpl

{assign var='assignedVar' value='foo' scope='global'}

assignedVar in child is {$assignedVar}

<br/>

文件test / test.tpl

{include file='test/testInclude.tpl'}

{if isset($assignedVar)}
    assignedVar is set in parent {$assignedVar}
{else}
    assignedVar is not set in parent
{/if}

<br/>

输出

   assignedVar in child is foo 
   assignedVar is set in parent foo 

真的应该有用 - 如果没有,那么你的Smarty实例会发生一些非常奇怪的事情。是否可以缓存模板,而在更改变量时不重新生成模板?

显然你应该弄清楚出了什么问题,但如果一切都失败了,你也可以使用替代的capture函数。

答案 1 :(得分:0)

scope='global'仅适用于smarty 3,而不适用于smarty 2。