在多个 .php 页面中重复使用 PHP smarty 母版页逻辑

Re-using PHP smarty master page logic across several .php pages

)

总的来说,我对 Web 开发还很陌生,我遇到了一个有趣的问题。

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

<!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 诸如菜单之类的逻辑,基本上必须在网站上的所有页面上重复使用,而不必在每个 PHP 脚本中 include/repeat 它。

在网页设计中有什么 "standard" 方法可以解决这个问题?你是不是简单地将这个"setup"逻辑封装在一个单独的PHP脚本中,并将其包含在所有需要使用主模板的脚本中?

谢谢大家的帮助!

剪切 <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