путь — ссылки в hpf в файле php не относятся к корню

У меня есть php-файл, который я использую в качестве заголовка шаблона для каждой страницы моего сайта. Но ссылки в заголовочном файле шаблона php не относятся к корневому каталогу и не обновляются автоматически, когда я создаю новую страницу в более глубокой подпапке корневой папки.

например.

home / index.php с <?php include("header.php") ?>

home / 2ndfolder / index.php с <?php include("../header.php") ?>

home / 2ndfolder / 3rdfolder / index.php с <?php include("../../header.php") ?>

Каждый индексный файл слушает один и тот же header.php.
И ссылки внутри header.php имеют:

например. <a href="../folder_x/">

Каждый файл index.php отображает header.php в браузере, но ссылки разные для каждого index.php. Они либо слишком много папок назад, либо недостаточно.

Таким образом, вместо ссылок, относящихся к положению header.php, они относятся к текущему index.php, который я предварительно просматривал в браузере.

Я использую Coda2, которая может быть проблемой, я не уверен.

0

Решение

Я написал функцию для моего проекта, которую вы можете использовать. Там может быть более эффективный способ, но он работает. Я добавляю эту функцию getRoot () перед всеми файлами, на которые я ссылаюсь.

 /**
*
* Return the root of the current page so we can call any page from any folder
*
*/
function getRoot(){
$root = ROOT_DIR;
$root = str_replace("\\", "/", $root);
$pageroot = getcwd() ."/";
$pageroot = str_replace("\\", "/", $pageroot);
$root = str_replace($root."/", '' , $pageroot);
$root = preg_replace("#(/.*?).*?(/)#", '/../', "/".$root);
$root = substr($root, 1);
return $root;
}

А затем установите эту строку на странице, которая находится в вашей корневой папке. ** Должен быть определен в вашей корневой папке.

define('ROOT_DIR', __DIR__);

Наконец, вы можете вызвать функцию, как это

$file = getRoot()."path/to/file";

В основном функция добавит правильное количество ../, чтобы вернуть вас в корневую папку. Тогда вы можете универсально установить любую переменную на основе этого.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector