不同页面上缺少全局页眉/页脚提示对象(PHP)

Posted

技术标签:

【中文标题】不同页面上缺少全局页眉/页脚提示对象(PHP)【英文标题】:Global Header/Footer prompting object missing on different pages (PHP) 【发布时间】:2021-11-20 06:10:57 【问题描述】:

我正在尝试创建包含相同页眉和页脚文件的网页,因此我不必继续添加它们。目前,我的 index.php 页面如下所示:

// header include
ob_start();
include "includes/header.html.php";
$header = ob_get_clean();

// index include
ob_start();
include "templates/main.html.php";
$output = ob_get_clean();

//layout include
include "templates/layout.html.php";

然后我的布局模板将与这些模板相呼应

<?= $header; ?>

<?= $output; ?>

<?= $footer; ?>

这适用于索引页面。但是当我转到另一个页面时出现问题,例如如果我重新定位到“关于”页面,我仍然可以使用 (../../includes/header.html.php) 通过文件夹导航到达标题,但是因为它是从不同的目录链接的,所以其余的链接也将返回“缺少对象”错误。

例如,重定向到“index.php”的主页将不再适用于“关于”页面,因为可以使用的目录应该是“../../index.php”——但我无法做到更改此设置,因为这样它就不会从我的主页链接。

关于我的关于页面的代码,在about.php页面上也是类似的,我有

ob_start()
include "templates/about.html.php";
$output = ob_get_clean()
include "templates/layout.html.php"

对于这个页面,我也尝试使用 Home layout.html.php,因为它是相同的布局,只是分配给 $output 变量的内容不同,但它只是为 header & 提供了未定义的变量页脚:

include "../../templates/layout.html.php";

否则,关于页面layout.html.php,我有

<?= "../../includes/header.html.php"; ?>

<?= $output ?>

<?php include "../../includes/footer.html.php"; ?>

我不太确定如何解决此问题,因此我们将不胜感激 - 如果我需要提供更多信息,请告诉我 - 非常感谢!

编辑:我的所有页面都在 Pages 文件夹中,Index.php 在根目录中 - 我是否也只需要将 About.php 移动到根目录?

【问题讨论】:

【参考方案1】:

在相对路径中使用__DIR__ 魔法常数。它包含包含当前脚本的目录的路径,例如

<?php include __DIR__ . "/../../includes/footer.html.php"; ?>

PHP 手册:Magic Constants

【讨论】:

以上是关于不同页面上缺少全局页眉/页脚提示对象(PHP)的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 如何在加载不同页面时保持页眉和页脚固定?

为啥word里的页眉页脚设置好了,关闭页眉页脚对话框,页面上不显示页眉页脚?

Jquery Mobile 在不同页面上的相同页脚

如何将 wordpress 博客与网站页眉和页脚设计集成到 php 网站博客页面?

首页去页眉横线

mPDF 不在新页面上添加页眉/页脚