2009-11-24 64 views
2

我最近决定将PHP并入我的网站,但我从未与之合作过,所以我对函数不熟悉......PHP的基础位置

我的问题是我正在使用包括像这样我的头()方法和页脚每个PHP页面:

<?php include('../php/header.php'); ?> 

这从/ public_html目录的/ php目录导航在我的网站的根。为了说明该文件可能位于不同的子目录的水平,在每个PHP页面的顶部我加:

<?php 
/* Path prefix so relative links work correctly */ 
$path = "../"; 
?> 

和../可以用../../替换为另一个文件子目录下等,并在页眉和页脚文件,链接前面都像这样:

<a href="<?php echo($path); ?>index.php" title="Home">Home</a> 

,直到我尝试与WordPress,位于使用它的一切工作正常像这样...我的网站上的一个子目录。 Wordpress使用动态页面,因此有时页面位于比其他页面更低的子目录中,并且链接将无法使用此方法。在我的旧网站设计中,我使用该标签将所有链接引用设置为我网站的根目录/ public_html目录。但是,PHP不受此标记的影响。我需要的是一种方法,在博客上为我的include()方法设置/ public_html目录中的链接引用。

有没有这样一种方法,还是有更好的方法来做我正在做的事情?

回答

5

假设你的配置文件在/system/config.php。在config.php中添加...

define('DIR_BASE', dirname(dirname(__FILE__))); 
define('DIR_INCLUDES', DIR_BASE . 'includes/'); 

现在只要你的config.php文件不移动,你的基目录将永远是它下面的2个目录。您可以在包含config.php的所有文件中使用这些文件。

require(DIR_INCLUDES . 'header.php'); 

现在,您不必担心自己在网站中的位置。

+0

+1,非常干净灵活的解决方案 – 2009-11-24 19:43:43

+0

我明白这个概念,但我不知道你所指的配置文件是如何运行的,以便变量可以被定义。你能解释一下config.php的工作原理吗? – 2009-11-25 03:52:25

+0

在每个页面中包含您的配置文件(其中包含您的目录的变量) – Galen 2009-11-25 16:37:10

1

你可以看看$ _SERVER ['DOCUMENT_ROOT']。它将返回文档根目录,如服务器配置文件中所定义。

0

你可以到WordPress的管理部分?

你不需要真的包含任何文件到Wordpress中。它有一种独立。或者,也许我误解了这个问题。

像上面的人说,你可以指定$ _SERVER ['DOCUMENT_ROOT']作为你的根,然后建立网址的。

EG:

<?php 

echo '<a href="'.$_SERVER['DOCUMENT_ROOT'].'/subfolder/subfolder/file.php">Link To page</a>'; 

?> 

这是否帮助或你还有问题吗?

0

最好的办法是使用$ _SERVER ['SERVER_NAME']或$ _SERVER ['DOCUMENT_ROOT'],这取决于哪一个更适合您的目录遍历需求(文档根将允许您深入根目录如果你在你的web根目录下包含一个目录,这会很有帮助)。

不清楚这将如何与Wordpress混乱,并且WP有自己的设置来确定根(在wp_options表中设置)。