网站的模板文件和文件结构


Template files and file structure for website

我有一些模板文件(我相信这就是它们的名字),例如:head.php(在这里我将所有信息保留在<head>内),导航菜单.php和页脚.php。我使用 php require_once将它们插入到我需要的地方。

当我创建一个包含文件的子文件夹时,我的问题出现了。比方说 myDomain.com/blog/blog-post1.php。然后,如果我想使用我需要使用的模板../head.php但它不能解决问题,因为head.php中的代码没有正确执行,因为所有指向CSS的链接也需要"../'".我已经求助于创建标头的另一个副本,我知道这是低效的。有没有更好的方法来解决这个问题?

在这里寻找答案,但似乎没有什么是我遇到的确切问题。我希望有人能帮忙。谢谢。

在您的包含文件中,始终使用调用它的文件的完整路径(写入要求的文件)所以而不是

require_once('nav-menu.php');

require_once(__DIR__ . '/nav-menu.php');

此示例表示导航菜单.php与定义该要求的文件位于同一位置。 如果是相对使用相对:

 require_once(__DIR__ . '/../nav-menu.php'); //nav-menu.php located one folder up from the calling file

这样,它将从您将调用文件的任何路径工作。

关于您的 CSS 和 JS 链接,您始终可以在路径的开头使用/,这意味着源始终相对于站点 URL 的根目录。

所以取而代之的是:

<link type="text/css" rel="stylesheet" href="css/main/app.css" />

使用这个:

<link type="text/css" rel="stylesheet" href="/css/main/app.css" />

这意味着此文件处于 http://yourdomain/css/main/app.css而这项工作来自四面八方

引用文档根目录中的公共链接和资源。 即以前面的斜杠开头。

想象一下头部.html和导航.html包括在内。

头.html

<head>
    <link href="/static/css/example.css" rel="stylesheet" type="text/css" />
</head>

导航.html

<nav>
    <a href="/foo/bar">Bar</a>
    <a href="/foo/baz">Baz</a>
    <a href="/foo/bat">Bat</a>
</nav>

如果您在 example.com/foo 或 example.com/foo/bat,所有链接仍然有效,因为它们是绝对的。

您可能会放弃相对链接的一些灵活性,但您的头痛会更少。

如果你使用 apache 作为你的 web 服务器和 mod php。 您可以为环境设置包含路径。

在 .htaccess 中

php_value include_path ".:/path/to/includes"

然后在任何 Php 文件中,您可以轻松地引用您的包含:

include 'head.html';
include 'nav.html';
// other stuff