Как отобразить одинаковые колонтитулы на разных страницах? - PullRequest
2 голосов
/ 21 ноября 2011

У меня есть файлы header.php и footer.php, которые я включаю во все мои страницы. Пример страницы выглядит так -

<?php include($_SERVER['DOCUMENT_ROOT'].'/header.php');?>

<div id="content">
...
</div> <!-- content -->

<?php include($_SERVER['DOCUMENT_ROOT'].'/footer.php') ?>

Хотя это хорошо работает на сервере, но когда я тестирую страницы локально [xampp в Windows 7], вместо заголовка появляется следующее сообщение об ошибке, аналогично для нижнего колонтитула -

Warning: include(C:/xampp/htdocs/header.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\f\index.php on line 1

Warning: include() [function.include]: Failed opening 'C:/xampp/htdocs/header.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\f\index.php on line 1

Это делает тестирование очень утомительным, так как мне приходится загружать на сервер каждое незначительное изменение.

Кроме того, я покопался в коде WP, и он использует get-header () для отображения файла header.php. Я не мог полностью понять функцию. Мой сайт не использует WP.

Как правильно включить файлы верхнего и нижнего колонтитула?

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

Простой и полезный способ (я использую это во всех моих проектах):

// find Base path
define( 'BASE_PATH', dirname(__FILE__) );

// include files
include BASE_PATH . '/header.php';
include BASE_PATH . '/footer.php';
2 голосов
/ 21 ноября 2011

правильный способ включения любого файла - это функция include () или require (). Wordpress использует функцию get_header (), потому что заголовок больше, чем 1 файл, поэтому они создали функцию для его вывода.

Похоже, у вас проблема с переменной $ _SERVER. Прошло довольно много времени с тех пор, как я работал с PHP, но я бы посоветовал вам использовать только относительные пути. Например, если файлы header.php и footer.php находятся в том же каталоге, что и ваш index.php, вы можете просто сделать:

<?php include("header.php');?>

<div id="content">
...
</div> <!-- content -->

<?php include('footer.php') ?>
1 голос
/ 21 ноября 2011

Кажется, что $_SERVER['DOCUMENT_ROOT'] указывает на C:\xampp\htdocs, в то время как ваши скрипты имеют значение C:\xampp\htdocs\f\, проверьте значение $_SERVER['DOCUMENT_ROOT'] в вашей локальной среде.

редактирование:

<?php
$rootDir = "";
if(strpos($_SERVER['HTTP_HOST'],'localhost')===FALSE)
{
  //On Production
  $rootDir = $_SERVER['DOCUMENT_ROOT'];
}
else
{
  //On Dev server
  $rootDir = $_SERVER['DOCUMENT_ROOT'].'/f';
}

<?php include($rootDir.'/header.php');?>

<div id="content">
...
</div> <!-- content -->

<?php include($rootDir.'/footer.php') ?>


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...