我非常熟悉WordPress,并且是这个CMS的粉丝。所以我已经习惯了包含get_header()
文件的header.php
函数。但是现在我正在开发一个原始的PHP项目,我也希望在这里也有类似的方便。我设计了一个如下文件夹结构:
project/ css/ bootstrap.css js/ jquery.js project.js inner-folder/ some-page.php header.php index.php footer.php style.css
我创建了一个自定义函数is_page()
,就像WordPress一样,可以加载特定于页面的项目。我的header.php
包含的所有内容都正常工作:
<html>
<head>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
...
我的footer.php
包含:
...
<script src="js/jquery.js"></script>
<script src="js/project.js"></script>
</body>
</html>
我的index.php
包含:
<?php require_once( 'header.php' ); ?>
...
<?php require_once( 'footer.php' ); ?>
一切都运转得很好,直到...
我开始研究inner-folder/
。在some-page.php
我使用了与index.php
相同的代码,您可以猜到,所有的CSS和JS文件链接都被破坏了。
如何创建一个函数或类似的东西,以便在我的project
文件夹的任何位置(在任何子目录或子子目录中),我可以加载任何资源而不会有任何阻碍?它也应该是精通业绩的。
答案 0 :(得分:0)
如果您有权访问php.ini
文件,并假设您正在运行Apache 2并且可以访问Apache配置文件,则可以编辑这些文件以解决您的问题。
第1步:编辑Apache配置
您需要将Apache配置中的目录和文档根目录设置为Web项目文件夹的路径。我假设已经完成,因为您已成功运行PHP。如果没有,请查看this question。
第2步:编辑PHP配置
PHP配置中有一个设置php.ini
,允许您设置包含文件时PHP引擎将查找的路径。
;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
;
; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
(this question图表)
如果您无法访问PHP配置或不想更改它,您可以随时使用[set_include_path][3]
功能,它基本上可以在脚本中执行相同操作
完成上述两个步骤后,您可以按如下方式包含文件:
非PHP资源,如CSS,JavaScript等:
/path/to/css
PHP资源:
path/to/php
请注意非PHP资源的前导斜杠,并且没有PHP资源的前导斜杠。
答案 1 :(得分:0)
好的,我找到了一个最可靠的解决方案:HTML <base>
标记 -
<html>
<head>
<base href="http://example.com/">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
...
答案 2 :(得分:-1)
使用包含菜单时遇到了同样的问题,因此我不必更改每个页面上的菜单。
所以我硬编码了网址:
<?php require_once('//domain.com/header.php'); ?>