Добавление большого количества html и php контента как переменной PHP

0

Я пытаюсь сделать мою жизнь намного проще и сделать все страницы одинаковыми нижними колонтитулами и заголовком из одного файла, и это то, что у меня есть до сих пор:

Страница с контентом

<?php
include ("content.php");

echo $page_header;

?>

<div id="content">
</div>

<?php

echo $page_footer;

?>

content.php

<?php

    // This is the header which we want to have on all pages
    $page_header = include ("resources/content/header.php");

    // This is the footer which we want on all pages
    $page_footer = include ("resources/content/footer.php");

?>

Пример Header.php

<html>
    <head>
        <title>This is my title</title>
    </head>
    <body>
        <div id="logo">
        </div>

Пример Footer.php

        <div id="footer">Copyright to me!</div>
    </body>
</html>

Проблема, с которой я столкнулась, - это мой контент header.php, не все отображаются и вызывают проблемы с форматированием страницы. В header.php есть некоторые инструкции php if и некоторые встроенные javascript... в этом случае?

Есть ли лучший способ сделать это?

ОБРАТИТЕ ВНИМАНИЕ: я использую PHP 5 локально, а мой сервер - PHP 4, поэтому ответ должен работать как для

Теги:
include

1 ответ

2
Лучший ответ

Один из способов - использовать для этого функции буферизации вывода.

Измените файл content.php:

ob_start();
include ("resources/content/header.php");
$page_header = ob_get_clean();

ob_start();
include ("resources/content/footer.php");
$page_footer = ob_get_clean();

Функция ob_start() создает временный буфер для любого вывода, затем include() делает вывод не для ответа на страницу, а для буфера, который был создан ob_start(). ob_get_clean() собирает содержимое буфера, уничтожает его и возвращает собранные данные в виде строки.


Другой способ, упомянутый @u_mulder, состоит в том, чтобы просто include() эти файлы там, где они нужны.

Изменить страницу с файлом содержимого:

<?php include ("resources/content/header.php"); ?>

<div id="content">
</div>

<?php include ("resources/content/footer.php"); ?>

Однако через некоторое время вам может понадобиться сложный механизм обработки шаблонов. Их много для php.

  • 0
    Это сработало! Пожалуйста, не могли бы вы подробнее рассказать о преимуществах использования ob_start(); более include(); ?
  • 0
    @AaronHatton обратите внимание на обновление. Там нет никаких преимуществ. Это просто предотвращает прямой вывод и позволяет собирать и обрабатывать его, прежде чем дать в качестве ответа клиентскому браузеру.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню