Как включить из нескольких каталогов

Мой файл header.php содержит.css для моего проекта. Я сделал новую страницу, на которой есть несколько каталогов. (Root / mods / people / employee / addemployee.php)

Если я положил файл в корень, CSS работает нормально. Если я положу его туда, где я хочу, CSS не появится.

Это можно обойти? Я пытаюсь держать вещи организованными.

Добавить код сотрудника:

<?php include("../../../includes/layouts/header.php"); ?>


<div id="main">
    <div id="subnavigation">
        <?php
            include('../../../mods/main_menu/index.html');
        ?>

    </div>

  <div id="page">


            <p>Add Employee!</p>




</div>
  </div>
</div>

<?php include("../../../includes/layouts/footer.php"); ?>

Код Header.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
    <head>
        <title>Company H&S Site </title>
        <link href="stylesheets/public.css" media="all" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="header">


      <h1>H&S Site </h1>


    </div>

1 ответ

Решение

Проблема в том, что эти головные боли вызывают ../../../ вызовы относительного пути. Вместо этого я рекомендую установить базовый путь по умолчанию и больше никогда не беспокоиться о таких вещах:

<?php
$BASE_PATH = '/the/path/to/the/codebase/';
include_once($BASE_PATH . "includes/layouts/header.php");
?>

<div id="main">
    <div id="subnavigation">
        <?php
            include_once($BASE_PATH . "mods/main_menu/index.html");
        ?>

    </div>

  <div id="page">


            <p>Add Employee!</p>
</div>
  </div>
</div>

<?php include_once($BASE_PATH . "includes/layouts/footer.php"); ?>

Если вы не знаете базовый путь к вашим файлам, поместите эту строку вверху вашего PHP-кода:

echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />";

И загрузите эту страницу. Где-то около вершины должна быть строка, которая читает:

Ваш путь: / / путь / к / / кодовая база /

Конечно /the/path/to/the/codebase/ будет ваш фактический путь к файлу, но это будет ваш базовый путь. Тогда просто установите $BASE_PATH к этому значению.

Установив жестко закодированный базовый путь с $BASE_PATH Вы всегда знаете, где находится ваш код, и можете с легкостью размещать свои страницы в любом месте структуры каталогов.

Я также рекомендовал бы использовать include_onceвместо include чтобы избежать сценариев, в которых ваш скрипт может случайно загрузить один и тот же файл более одного раза.

include_once($BASE_PATH . "includes/layouts/header.php");
Другие вопросы по тегам