【问题标题】:PHP equivalent to site.master?PHP相当于site.master?
【发布时间】:2011-08-21 04:51:43
【问题描述】:

ASP.Net 的优点之一是能够设置一个site.master 文件,该文件包含来自站点的所有重复 HTML/代码,并且仍然能够从单个网站页面更改其中的内容。 (例如,更改每个页面的 <title> 标签,或在文档的 <head> 中添加其他内容。)

在过去的 PHP 中,我使用服务器端包含来删除重复的 HTML/代码(例如文档的顶部、主导航、页脚等),但显然您无法更改其中的任何内容页面。

有没有办法在 PHP 中实现site.master 类型功能? 如果不是,有什么好的方法可以删除重复的 HTML/代码,同时仍然能够更改页面标题、突出显示的导航等内容。

谢谢。

【问题讨论】:

    标签: php html server-side-includes


    【解决方案1】:

    这只是称为模板引擎,有大量的 php 引擎。

    Smarty 就是其中之一

    【讨论】:

    • 感谢您的回答。这显然是一个非常普遍的需求。大多数程序员在用 PHP 制作网站时是否使用模板引擎?
    • 从我所做的研究看来,大多数程序员不喜欢使用 Smarty 或其他模板引擎,因为 PHP 已经足够好了。
    • @django:大多数程序员喜欢使用模板引擎,现在是聪明还是 w/e 都没有关系。你的研究技能在那里失败了xD
    • 当然。它说 PHP 没有模板引擎也没问题,但是“如果你不信任其他可能正在处理此代码的人,你可能不得不强迫他们使用 Smarty 之类的东西。”我是唯一的程序员。
    【解决方案2】:

    提取公共片段的最简单方法是使用require(),这将允许您在当前文件中包含其他文件。

    如何使用它的示例:

    header.php - 一个可重用的片段

    <div class="header">
        <h1><?= $pageTitle ?></h1>
    </div>
    

    pageContents.php

    <body>
    <?php
    $pageTitle = 'Check it out, the Foobar page!';
    require('header.php');
    ?>
    blah blah
    </body>
    

    【讨论】:

    • 是的。您需要的片段不必是静态的。 “显然您不能更改页面中的任何内容”是错误的,您可以在父页面中定义 var 并让它们在子页面中回显。
    • 你能在你的回答中给我一个例子吗,因为我不明白你如何使用 require() 来引入每个页面的顶部(例如),然后改变页面的标题.谢谢。
    • 优秀。这似乎是我实现我想要的最快和最简单的方法。谢谢!
    • 我在这里提出了一个问题:stackoverflow.com/questions/5930466/…
    • &lt;?= 替换为&lt;?php echo
    【解决方案3】:

    您正在寻找的是为 PHP 构建的模板引擎。 ASP 是一个内置模板的框架,它为您提供您所指的功能(即模板、会员提供程序等)

    为了在 PHP 中获得相同的效果,您需要使用框架或模板引擎。

    一些示例:

    【讨论】:

      【解决方案4】:

      PHP 中没有这样的功能,您可以将组件移动到单独的文件中,并使用 includerequire 函数将它们包含在主文件中。

      一些框架确实提供(模拟)这样的功能。例如在 cakePHP 中,您可以有一个布局文件,您可以在其中输出您的页面。

      【讨论】:

        猜你喜欢
        • 2016-01-01
        • 2012-12-03
        • 2011-08-27
        • 2012-04-23
        • 2012-03-11
        • 2010-11-28
        • 2015-05-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多