我有一个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 :(得分: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";
基本上,该功能将添加正确的../数量,以将您设置回根文件夹。然后,您可以基于此设置所有变量。