【问题标题】:PHP Smarty tpl, call the same php code for all pagePHP Smarty tpl,为所有页面调用相同的php代码
【发布时间】:2012-05-12 19:39:44
【问题描述】:

所以我想使用类似于 asp.net 处理母版页的 smarty,即我想创建一个 master.tpl 文件,该文件负责始终呈现大部分页面(页眉、页脚、背景等) ,但是我在每个页面上都有一个我想要的下拉菜单,并且它有一些动态数据,我不想在每个使用 master.tpl 文件的 php 脚本中调用或重现这个函数,我想要一种方法,当每当使用 tpl 文件时,都会另外运行正确的脚本。

我希望以正确的方式执行此操作,因此不要使用 {php} 或其他任何已弃用的内容。

谢谢。

【问题讨论】:

    标签: php web master-pages smarty3


    【解决方案1】:

    渲染一个单独的 smarty 模板并将其添加到配置文件中

    $smarty->assign('items',getmenuitems());
    
    
    $menu = $smarty->fetch('mymenu.tpl');
    
    $smarty->assign('dynamic_menu',$menu);
    

    如果您将这样的代码放在配置文件等中,在每个页面上调用它应该做您想做的事。然后可以将 {$dynamic_menu} 放入您的主模板中。

    另一方面,我发现为 smarty 使用不同的分隔符可以消除使用值得脚本等的痛苦。

    $smarty-> left_delimiter = '{[';
    

    【讨论】:

    • 嗯,对这个配置文件了解很多,可能有些东西,我需要进一步调查。我不应该说当前的托管服务提供商是本地企业,不是最大的支持,所以可能有一些事情,我可以做......
    • 配置文件不应该有任何数据计算,因为它是一个配置文件。由于您使用 SMARTY 作为显示层,因此以更多 MVC 方式构建它。并且不需要获取 tpl,传递给 var 并在更全面的 tpl 中第二次获取相同的数据。 {include} 会以某种方式解决设计师不会头疼的问题。
    【解决方案2】:

    只需通过 smarty 调用包含它。 {include file="path" name_of_variable=$value_of_variable}。在 php 代码中,只需执行额外的代码,即可在每个页面上生成数据。

    【讨论】:

    • 我之前看过一些,但我认为那只是为了包含 tpl 文件。
    • 但是你想调用一个 tpl 文件,刚才通过代码提供了值。
    • 不确定,我完全理解,但我想做的是真正将模板及其相应的代码隐藏在页面后面,这样每当使用 master.tpl 时,它的代码页是自动运行的,这样做的好处是只在一个地方定义和运行。
    【解决方案3】:

    所以,我最终编写了一个插件(这比我最初想象的要简单得多),并且只返回一个包含 <li> 项目的字符串,我想知道是否可以在 foreach 循环中调用这个函数,我昨晚无法让它工作。

    【讨论】:

      猜你喜欢
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多