如何在PHP中更改默认页面布局的内容

时间:2014-10-22 10:06:29

标签: php css

我有一个PHP网页,设计类似于下面的布局。它保存为default.php,旨在作为网站中所有页面的页面布局导入。 “A部分”和“部分B”中的内容对于所有页面都是相同的,但我想更改每个页面的“部分C”的内容。我该怎么做?

我知道我可以在.NET框架中使用“内容占位符”,但我如何在PHP中执行此操作?我是PHP的新手 - 非常感谢您的帮助。

+------------------------------+
|        section  A            |
|-----+------------------------|
|     |                        |
|     |                        |
|     |                        |
|  B  |     section C          |
|     |                        |
|     |                        |
+-----+------------------------+

5 个答案:

答案 0 :(得分:1)

如果你问如何使用php页面作为模板,你可以采用一些不同的方法。

将您的母版页分成两部分,一部分在C部分之前,一部分在之后,然后包括每页之前/之后。

示例:

include('includes/masterA.php');
//INSERT PHP HERE
echo $content;
include('includes/masterB.php');

或者将您的PHP代码预先计算为内容变量,告诉母版页将其回显,并且由于包含将其视为一个大脚本,因此只需选择您预先指定的那个并回显结果。< / p>

示例:

//INSERT PHP HERE
$content = "textfromphp";
include('includes/master.php');

master.php:

echo "<div>Section A</div>";
echo "<div>Section B</div>";
echo "<div>Content:".$content."</div>";

答案 1 :(得分:1)

您可以使用“ob_start”捕获一个变量中的C部分内容 然后在default.php里面添加它在C部分

C节输出

<?php

    ob_start();

    echo "<div>Hello</div>";

    $section_c = ob_get_contents();

    ob_end_clean();

    ?>

如default.php

<html>
  <body>
    <div id="section-a">...</div>
    <div id="section-b">...</div>
    <div id="section-c">
      <?php echo $section_c ?>
    </div>
  <body>
</html>

或者,最好使用Twig Template Engine,它以干净和标准的方式解决这个问题。 您可以在 Twig

上找到有关Twig Installation and Configuration以及安装和配置指南的更多信息

答案 2 :(得分:1)

根据您的评论,如果您使用require包含default.php,则只需将default.php中的内容替换为变量,然后在需要default.php之前设置该变量。

举个例子:

//index.php

$page = isset($_GET['p'])? $_GET['p'] : 'home';

$pages = ['home','about','contact'];

$include = in_array($page, $pages) ? $page . '.php' : 'error.php';

require_once('default.php');

//default.php

<html>
    <head></head>
    <body>
        <div class="header">
            <h1>Page header</h1>
        </div>
        <div class="leftcol">
            <p>left column contents</p>
        </div>
        <div class="main">
            <?php include($include);?>
        </div>
    </body>
</html>

然后您将访问不同的页面,如下所示:

example.com/ //would show homepage
example.com/?p=about //would show about page
example.com/?p=blahfff //would show error page

答案 3 :(得分:0)

在您的情况下,页面类,当您到达C部分时,您需要做的就是拥有一个将被回显的var命名内容。因此脚本应该像这样加载:

  1. 页面课程
  2. C部分(无论该部分是什么)
  3. 所以你点击的每一件事以及你去的任何地方,结果必须返回给一个方法,让我们称之为在页面类中继的displayContent($content)。换句话说,页面类需要包含在要在C部分中显示的每个php文件中,并且每次调用displayContent($content)方法,在文件的末尾,$ content填充HTML代码: d

    希望它有所帮助!
    继续编码!
    战神。

答案 4 :(得分:-1)

您可以使用PHP include函数执行此操作,请考虑以下示例。

如default.php:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <header><?php include 'sec-a.php';?></header>
        <section>
            <aside><?php include 'sec-b.php';?></aside>
            <aside><?php include 'sec-c.php';?></aside>
        </section>
    </body>
</html>

部分-a.php只会:

<code>to appear in section A</code>

部分-b.php:

<code>to appear in section B</code>

部分-c.php:

<code>to appear in section C</code>