php – 从不同目录深度的不同页面动态添加相同的CSS文件
好吧,我一直试图解决这个问题一段时间了.
我有一个我正在研究的网站,这里基本上是我的结构: index.php page-x/ index.php page-x-y/ index.php include/ functions.php css/ main.css 除了添加更多的子文件夹和索引页面. 它们都需要有css / main.css,但是任何一个索引页面的路径都会有所不同. 现在我使用functions.php添加CSS,并且必须手动输入从索引页面到functions.php的相对路径(即require_once(“../ include / functions.php”);或../. ./include等 我怎样才能使functions.php能够找出它所包含的任何索引页面到css / main.css的相对路径? I.E.我如何为functions.php中的以下代码定义$relDir: echo '<link rel="stylesheet" type="text/css" href="' . $relDir . 'css/main.css" />'; 我可以每次手动传递“”或“../”或“../../”到该功能,但我可以避免吗? 编辑3 然而,css似乎没有正确链接,在我的本地机器上生成的链接看起来像:(我可以操纵斜线以保持一致,但它没有帮助) "C:Documents and SettingsLucassite/css/main.css" (注意:我在easyPHP上使用别名,以便我可以从http://127.0.0.1:8888/site/连接到此地址但but__DIR__找到该文件的ACTUAL目录. 在我正在测试的(我的大学)服务器上回来了 "/Volumes/Web/Students/MYNAME/Sites/MYSITE/css/main.css" 网站的ACTUAL URL如下: http://www.SCHOOL.com/MYNAME/MYSITE/ CSS在两种情况下都不会链接 编辑2我可以将$relDir定义为: str_repeat('../',substr_count($_SERVER['REQUEST_URI'],'/'); 根据索引的深度返回以下内容之一: "" "../" "../../" 这显然有很多处理.听起来最好的做法是调查适当的测试环境,并使用绝对路径.我会调查一下.我仍然有点像一些新东西. 编辑1:好的,大多数人都建议我坚持手动操作,最初有一个函数调用,如下所示: <?php require_once("../include/functions.php"); buildHead("Music","../"); //($title,$relDir) ?> 我只需将../更改为每个页面的两个地方. 解决方法
最简单的方法?使用绝对路径.如果您的网站只停留在一条固定路径上,那就很容易了.如果您想让自己随意更改站点结构,请添加配置参数 – 例如.在每个PHP文件的顶部包含一个配置文件,并在其中定义一个$BASE参数,该参数保存应用程序库的绝对路径,然后执行:
echo '<link rel="stylesheet" type="text/css" href="'.$BASE.'/css/main.css" />' 如果$BASE为空,则默认为您的网络服务器的根目录. 您也可以使用__DIR__魔术常量自动执行所有这些处理(如果使用PHP< 5.3,则为__FILE__但是它没有太大变化 - 您只需要从您获得的文件名中删除文件名).如果您在每个PHP文件的顶部包含此配置文件(或者您使用apache auto prepend指令),并且您的配置文件位于您网站的基本目录中,那么这就足够了: $BASE = __DIR__; 否则,如果它位于目录中,您只需要启动,但这在部署时是已知的,并且不依赖于请求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |