【发布时间】:2011-02-15 15:38:49
【问题描述】:
我刚刚通过了一个用 smarty 模板编写的应用程序,所以我不熟悉整个事情是如何工作的。
所以我的问题是 smarty 从应用程序级别的文件中获取模板,因此它会影响网站上的每个页面。我需要一种方法来告诉单个模板忽略应用程序级别的提取。
所以在应用程序级别它是 echo $smarty->fetch('layout/main.html.tpl');我只想在一个模板上忽略它。有人可以帮忙吗?
【问题讨论】:
我刚刚通过了一个用 smarty 模板编写的应用程序,所以我不熟悉整个事情是如何工作的。
所以我的问题是 smarty 从应用程序级别的文件中获取模板,因此它会影响网站上的每个页面。我需要一种方法来告诉单个模板忽略应用程序级别的提取。
所以在应用程序级别它是 echo $smarty->fetch('layout/main.html.tpl');我只想在一个模板上忽略它。有人可以帮忙吗?
【问题讨论】:
您希望在应用程序中获取该模板的任何点添加一些逻辑。问题不在于智能,而在于应用程序。 smarty 模板无法干扰渲染它的 php,也无法在 php 脚本中引入逻辑。
【讨论】:
你会从脚本而不是模板调用 $smarty->fetch()。您可以使用逻辑来选择不同的模板名称并获取任何合适的模板,因此单个脚本可以轻松调用您的任何模板。
比如……
$template = 'error.tpl';
if($conditions =='right')
{
$template = 'normal.tpl';
}
echo $smarty->fetch("layout/$template");
另外,请注意,您可以使用 display() 方法而不是使用 fetch() 回显:
$smarty->display("layout/$template");
这样您就不会将模板存储到您要输出的变量中。
如果这是一个简单的情况,一个脚本调用模板“A”而另一个脚本调用模板“B”......
//call in template A
$smarty->display("layout/templateA.tpl");
//call in template B
$smarty->display("layout/templateB.tpl");
在这种情况下不需要额外的逻辑。
【讨论】: