【问题标题】:Ignore a Smarty Templates Fetch() for one page忽略一页的 Smarty 模板 Fetch()
【发布时间】:2011-02-15 15:38:49
【问题描述】:

我刚刚通过了一个用 smarty 模板编写的应用程序,所以我不熟悉整个事情是如何工作的。

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

所以在应用程序级别它是 echo $smarty->fetch('layout/main.html.tpl');我只想在一个模板上忽略它。有人可以帮忙吗?

【问题讨论】:

    标签: php css templates smarty


    【解决方案1】:

    您希望在应用程序中获取该模板的任何点添加一些逻辑。问题不在于智能,而在于应用程序。 smarty 模板无法干扰渲染它的 php,也无法在 php 脚本中引入逻辑。

    【讨论】:

      【解决方案2】:

      你会从脚本而不是模板调用 $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");
      

      在这种情况下不需要额外的逻辑。

      【讨论】:

      • 谢谢超现实主义,我可以在附加到模板的相关脚本中粘贴什么,有点像rails中的控制器吗?
      • 我已添加到答案的末尾。如果您正在寻找更多的 MVC 解决方案,Smarty 不会处理 - 它是一个模板系统,只是视图。您必须自己提供模型和控制器。
      • 有趣的是,我目前正在用 Rails 重写网站,我刚刚使用了这个 smarty 系统,而且我不是 php 开发人员。
      • 我不会选择 Rails 系统和 Smarty 模板,这……很奇怪。我不是 Rails 开发者,但它没有内置自己的模板系统吗?
      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多