2011-02-15 31 views
0

我刚刚通过一个应用程序工作在smarty模板中编写,所以我不熟悉整个事情的工作原理。忽略一个Smarty模板抓取()一页

所以我的问题是smarty是从应用程序级别的文件中获取模板,因此它会影响网站上的每个页面。我需要一种告诉单个模板忽略应用程序级别获取的方法。

因此,在应用程序级它是echo $ smarty-> fetch('layout/main.html.tpl');我只想在一个模板上忽略它。谁能帮忙?

回答

0

你想添加一些逻辑到应用程序的任何一点获取该模板。这个问题并不聪明,它是应用程序。聪明的模板无法干扰呈现它的php,也不能在php脚本中引入逻辑。

0

您可以从脚本调用$ smarty-> fetch(),而不是模板。您可以使用逻辑来选择不同的模板名称并获取适当的模板,以便单个脚本可以轻松调用您的任何模板。

例如...

$template = 'error.tpl'; 
if($conditions =='right') 
{ 
    $template = 'normal.tpl'; 
} 

echo $smarty->fetch("layout/$template"); 

另外请注意,您可以使用display()方法,而不是取()回应:

$smarty->display("layout/$template"); 

这样,你不存储将模板放入要输出的变量中。

如果它是其中一个脚本调用模板“A”,另一个电话模板“B”一个简单的例子...

//call in template A 
$smarty->display("layout/templateA.tpl"); 

//call in template B 
$smarty->display("layout/templateB.tpl"); 

没有必要在这种情况下,额外的逻辑。

+0

感谢超现实主义,有没有什么我可以坚持在相关的脚本附加到模板,有点像控制器在轨? – 2011-02-15 16:11:59