所以我想使用类似于 asp.net 处理母版页的 smarty,即我想创建一个 master.tpl 文件,该文件负责始终呈现大部分页面(页眉、页脚、背景等),但是我在每个页面上都有一个我想要的下拉菜单,它有一些动态数据,我不想在每个使用 master.tpl 文件的 php 脚本中调用或重现这个函数,我想要一种方法,当那个 tpl文件被使用,另外运行正确的脚本。
我希望以正确的方式做到这一点,所以不要使用 {php} 或其他任何不推荐使用的东西。
谢谢。
所以我想使用类似于 asp.net 处理母版页的 smarty,即我想创建一个 master.tpl 文件,该文件负责始终呈现大部分页面(页眉、页脚、背景等),但是我在每个页面上都有一个我想要的下拉菜单,它有一些动态数据,我不想在每个使用 master.tpl 文件的 php 脚本中调用或重现这个函数,我想要一种方法,当那个 tpl文件被使用,另外运行正确的脚本。
我希望以正确的方式做到这一点,所以不要使用 {php} 或其他任何不推荐使用的东西。
谢谢。
渲染一个单独的 smarty 模板并将其添加到配置文件中
$smarty->assign('items',getmenuitems());
$menu = $smarty->fetch('mymenu.tpl');
$smarty->assign('dynamic_menu',$menu);
如果您将这样的代码放在每个页面上调用的配置文件等中,它应该可以执行您想要的操作。然后 {$dynamic_menu} 可以放在你的主模板中。
另一方面,我发现为 smarty 使用不同的分隔符可以消除使用值得脚本等的痛苦。
$smarty-> left_delimiter = '{[';
只需通过 smarty 调用包含它。{include file="path" name_of_variable=$value_of_variable}。在 php 代码中,只需执行附加代码,即可在每个页面上生成数据。
所以,我最终写了一个插件(这比我最初想象的要简单得多),只返回一个字符串,包含<li>
项目,我想知道是否可以在 foreach 循环中调用这个函数,我无法理解昨晚上班。