PHP Smarty tpl,为所有页面调用相同的 php 代码


PHP Smarty tpl, call the same php code for all page

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

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

谢谢。

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

$smarty->assign('items',getmenuitems());

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

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

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

$smarty-> left_delimiter = '{[';

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

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