我有一个PHP文件,我正在使用它作为我网站每个页面的模板标题。但是 PHP 模板头文件中的链接不是相对于根目录的,当我在根文件夹的更深的子文件夹上创建新页面时不会自动更新。
例如
首页/索引.php 与<?php include("header.php") ?>
首页/第二文件夹/索引.php 带<?php include("../header.php") ?>
首页/第二文件夹/第三文件夹/索引.php带<?php include("../../header.php") ?>
每个索引文件侦听相同的标头.php。 标题内的链接.php具有:
例如<a href="../folder_x/">
每个 index.php 文件在浏览器中显示标头.php但每个索引的链接不同.php。它们要么是太多的文件夹,要么不够。
因此,链接不是与标题.php的位置有关,而是与当前索引有关.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";
基本上,该函数将添加正确的 ../'s 将您设置回根文件夹。然后,您可以基于此通用地设置任何变量。