不同页面上缺少全局页眉/页脚提示对象(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)的主要内容,如果未能解决你的问题,请参考以下文章
为啥word里的页眉页脚设置好了,关闭页眉页脚对话框,页面上不显示页眉页脚?