PHP - 构建文件夹,路径,模板

时间:2017-09-07 08:25:35

标签: php structure templating

我有一个关于模板我的php项目的问题。

目前我的文件夹结构如下所示:

/Root
|index.php
|_footer.php
|_header.php
|_nav.php
|
|site_1.php
|site_2.php
|
|css/
|js/
|images/
|subfolder1
   |site_3.php
   |site_4.php
   |subfolder2
      |site_5.php

我通常包括" _header"和" _footer.php"在我的index.php文件中,但我有子文件页面的问题。例如,我的_header.php有一个include" _nav.php"。但是当我在site_4.php中包含_header.php时,我遇到了资产和导航的问题。

我读了一个配置文件来定义网站网址,资产路径等,但对我来说并不是那么清楚。理想情况下,我希望有一个"资产"包含css,js等子文件夹的文件夹。

此外,我想知道我可以使用include" _nav.php"使用site_url()。我试过了,但我总是遇到错误。 主要问题是,如何制作site_url,base url(此时我仍然对这些术语以及如何使用它们感到困惑) 谢谢。

2 个答案:

答案 0 :(得分:0)

因为您使用的是纯PHP(没有使用框架),所以这有点棘手。有几种方法可以解决这个问题,我建议如下:

在Root文件夹中,创建新文件,我们将其命名为“base.php”,其内容为:

<?php
// This is base.php
define('ROOT_PATH', realpath(dirname(__FILE__)));

现在,在您的每个网站页面(如site_1.php,subfolder1 / site_3.php等)中都包含base.php文件:

<?php
// This is site_1.php
require_once 'base.php';
// ...

在子文件夹网站页面中,包含如下:

<?php
// This is subfolder1/site_3.php
require_once '../base.php';
// ...

如果网站页面较深,请将其包含在内:

<?php
// This is subfolder1/subfolder2/site_5.php
require_once '../../base.php';
// ...

现在,在任何php文件中,如果你想包含另一个php文件(如_nav.php),你可以像这样包含它:

<?php
// This is _header.php
require_once ROOT_PATH . '/_nav.php';
// ...
?>
<!-- to include any css/js/images files, it would be like this: -->
<link rel="stylesheet" type="text/css" href="/css/my_css.css">
<script src="/js/my_js.js"></script>
<img src="/images/my_image.jpg">

我没有测试代码,但它应该可以工作。

答案 1 :(得分:0)

您要找的是HTML基本标签。这将使每个相对链接使用指定的基础。

即。头脑中有这个:

<head>
    <base href="http://www.yoursite.com/assets/" />
</head>

...将使以下代码从assets文件夹加载图像:

<img src="image.jpg" />

请参阅:https://www.w3schools.com/tags/tag_base.asp