Я пытаюсь сделать мою жизнь намного проще и сделать все страницы одинаковыми нижними колонтитулами и заголовком из одного файла, и это то, что у меня есть до сих пор:
Страница с контентом
<?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, поэтому ответ должен работать как для
Один из способов - использовать для этого функции буферизации вывода.
Измените файл 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.
ob_start();
болееinclude();
?