在几个.php页面上重用PHP smarty母版页逻辑

时间:2015-05-15 20:55:04

标签: php html templates web smarty

所以,我对Web开发一般都很陌生,而且我遇到了一个有趣的问题。

基本上,我正在使用Smarty模板引擎和PHP来创建一个基本网站。我目前拥有的是主模板,基本上是必须在网站的每个页面上使用的网站布局部分。

<!DOCTYPE html>
<html>
<head>
    <title>Pet Nicknames!</title>
    <link href="styles/main.css" rel="stylesheet">
</head>

<body>  
    <div id="websiteBody">
        <div id="header">
        </div>

        <div class="menu">
            <div class="menuContainer">
                {foreach $menuButtons as $menuButton}
                    <a href="{$menuButton->link}"><div class="menuButton">
                        <span>{$menuButton->text}</span>
                    </div></a>
                {/foreach}
            </div>
        </div>

        <div id="content">
            {block name=content}{/block}
        </div>

        <div id="footer">
        </div>
    </div>
</body>

正如您所看到的,这个主模板包含一个foreach,它基本上只获取一个从“master.php”脚本分配的数组,并从数据库中检索一组按钮。

问题是现在我想创建几个PHP页面,但是他们都应该重新使用这个模板,并且所有人都必须运行PHP脚本来检索菜单按钮。

我已经创建了一个名为“content”的块,我正在考虑使用模板继承来执行此操作...但是我仍然不清楚如何正确地重用PHP逻辑,例如for菜单,必须在网站上的所有页面上重复使用,而不必在每个PHP脚本中包含/重复它。

网页设计中围绕这个问题的“标准”方法是什么?您是否只是将这个“设置”逻辑封装在一个单独的PHP脚本中,并将其包含在需要使用主模板的所有脚本中?

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

剪切<div class="menu">...</div>并将其放在名为menu.tpl的单独模板中,代替此div(在主模板中写入):

{include file="menu.tpl" menuButtons=$menuButtons}

file - 要包含的模板文件的名称

menuButtons - 将本地传递给模板的变量

请查看此文档了解更多信息:

http://www.smarty.net/docs/en/language.function.include.tpl