У меня есть 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, которая может быть проблемой, я не уверен.
Я написал функцию для моего проекта, которую вы можете использовать. Там может быть более эффективный способ, но он работает. Я добавляю эту функцию 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";
В основном функция добавит правильное количество ../, чтобы вернуть вас в корневую папку. Тогда вы можете универсально установить любую переменную на основе этого.
Других решений пока нет …