PHP - 使用include来模板化页面是否常见?

时间:2012-11-08 08:15:54

标签: php templates

网络编程新手。我想知道使用包含模板页面是否常见。例如,您将标题,导航和页脚代码全部放在单独的文件中,然后将它们包含在内容不同的特定页面中。这与我在研究中遇到的像Smarty这样的模板语言或模板引擎有什么不同?

3 个答案:

答案 0 :(得分:1)

我使用这种方法,我认为它适用于Web开发,但更喜欢使用require_once函数而不是include函数

对模板引擎了解不多。

答案 1 :(得分:1)

包含模板的问题是您必须包含管理包含页脚和标题的文件。特殊情况很难维护,可能导致修改大量文件。

最好的方法是装饰您的模板,其布局可以处理页脚,页眉,侧边栏等

从纯技术角度来看,您的模板包含在一般演示文稿中,而不是模板中,以包含一般的演示文稿。

Symfony1和Twig模板引擎正在这样做。

答案 2 :(得分:0)

恕我直言,我喜欢有一个单一的布局视图,其中包含任何不能在页面上移动的内容。

<!DOCTYPE HTML>
<html>
    <head>
        <meta></meta>
        <styles></styles>
    </head>
    <body>
        <nav></nav>
        <header></header>
        <section class="rightColumn"></section>
        <section class="mainContainer">
             <?php include('your/awesome/view.php') ?>
        </section>
        <footer></footer>
        <script></script>
    </body>
</html>                

您可以查看TWIG模板引擎 这很容易

<强> layout.html.twig

<!DOCTYPE HTML>
<html>
    <head>
        <meta name="description" content="{% block metaDesc %}{% endblock %}"></meta>
        <style></style>
        {% block appendStyle %}{% endblock %}
    </head>
    <body id="{% block bodyId %}{% endblock %}">
        <nav></nav>
        <header></header>
        <ul class="breadcrumb">
            {% block breadcrumb %}{% endblock %}
        </ul>
        <section class="rightColumn"></section>
        <section class="mainContainer">
            {% block body %}{% endblock %}
        </section>
        <footer></footer>
        <script></script>
        {% block appendScript %}{% endblock %}
    </body>
</html>

<强> page.html.twig

{% extends '::layout.html.twig' %}

{% block metaDesc %}Hey, that is my description !{% endblock %}

{% block appendStyle %}
    <link rel="stylesheet" href="path/to/specific.css">
{% endblock %}

{% block bodyId %}index{% endblock %}

{% block breadcrumb %}
    <li><a href="">Homepage</a></li>
{% endblock %}

{% block body %}
    <h1>Awesome Website</h1>
    <h3>Latest news..</h3>
    <article></article>
{% endblock %}