href ссылки в файле включения php не относятся к корню - PullRequest
0 голосов
/ 19 октября 2018

У меня есть 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, которая может быть проблемой, я не уверен.

1 Ответ

0 голосов
/ 19 октября 2018

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

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

...