【问题标题】:PHP - structuring folders, paths, templatesPHP - 结构化文件夹、路径、模板
【发布时间】:2017-09-07 08:25:34
【问题描述】:

我有一个关于模板化我的 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

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

我读了一个配置文件来定义站点 url、资产路径等,但我不太清楚。理想情况下,我希望有一个“资产”文件夹,其中包含用于 css、js 等的子文件夹。

我还想知道我可以将“_nav.php”与 site_url() 一起包含在内。我试过了,但我总是出错。 主要问题是,如何制作site_url,base url(此时我仍然对这些术语以及如何使用它们感到困惑) 谢谢。

【问题讨论】:

  • 在根目录中有一个文件,该文件有一个define,其中包含项目根目录的路径,你会没事的。但是,如果您的问题是询问构建项目的最佳方式,那肯定会被归类为主要是固执己见
  • 阅读我之前的答案 - stackoverflow.com/questions/46009282/…

标签: php structure templating


【解决方案1】:

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

在你的根目录下,新建一个文件,我们把它命名为“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">

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

【讨论】:

    【解决方案2】:

    您正在寻找的是 HTML 基本标记。这将使每个相对链接都使用指定的基数。

    即。在你的脑海里有这个:

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

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

    <img src="image.jpg" />
    

    见:https://www.w3schools.com/tags/tag_base.asp

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 2011-09-08
      • 2018-02-04
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多