现在下载应用并免费测试10天
货币 选择语言 选择地区

PHP执行顺序:头部、主页面和页脚

本开发者教程通过一个基本布局展示了 bx_Header.html、index.html 和 bx_Footer.html 的各个PHP脚本执行时机。你将了解 $LayoutHTML 的内容是如何逐步扩展的,以及你可以在哪里进行页面相关的或全局的更改。

前提条件和目标

在本开发者教程中,你应该了解 bluetronix CMS 是如何将页面组合成布局、头部、主页面和页脚的。我们将向你展示 这些区域的 PHP 脚本的执行顺序 以及在此过程中 $LayoutHTML 中已经加载了哪些部分。

在示例中,基本布局由 CMS 文件 bx_Header.html、index.html 和 bx_Footer.html 组成。主页面 index.html 代表被访问的 HTML 页面。

基本布局决定了三个区域的加载顺序。在示例中,你可以在表格 00_layout 中找到布局定义。

布局的相关片段如下所示:

__DB_Layout_/bx_Header.html__
<main>
   __DB_Layout_Main__
</main>
__DB_Layout_/bx_Footer.html__

第一个占位符引入 bx_Header.html。在 main 元素中,当前请求的页面通过 __DB_Layout_Main__ 引入,在我们的示例中是 index.html。接着引入 bx_Footer.html。

尽管布局定义包含所有三个区域,但各个区域的 HTML 内容会逐步加载到 $LayoutHTML 中。

1. 头部的PHP代码首先执行。

在 文件管理器 中打开 bx_Header.html 文件。你可以通过 PHP 代码 编辑该区域的 PHP 代码。

头部是第一个加载的页面区域。在其 PHP 代码执行过程中,$LayoutHTML 仅包含来自 bx_Header.html 的 HTML 内容。

PHP-Code: bx_Header.html

$LayoutHTML enthält:
   bx_Header.html

例如,你可以在这里替换头部的占位符或准备导航。此时无法通过 $LayoutHTML 访问 index.html 或 bx_Footer.html 的实际 HTML 内容。

2. 主页面的 PHP 代码随后执行

在头部加载后,CMS 加载请求的主页面,这里是 index.html,并执行其 PHP 代码。此时,$LayoutHTML 同时包含头部和主页面的 HTML 代码。

PHP-Code: index.html

$LayoutHTML enthält:
   bx_Header.html
   index.html

因此,主页面的 PHP 代码不仅可以替换自己的占位符,还可以更改头部内已存在的占位符。

例如,如果你的头部包含占位符 __HeaderClass__,你可以从主页面替换它:

$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);

某个特定的主页面可以将其菜单项在已加载的头部中标记为活动。

此时页脚尚未加载,因此无法通过 $LayoutHTML 可靠地更改其 HTML 内容。

3. 页脚的 PHP 代码最后执行

最后,CMS 加载 bx_Footer.html 并执行其 PHP 代码。现在 $LayoutHTML 包含所有三个区域的 HTML 内容。

PHP-Code: bx_Footer.html

$LayoutHTML enthält:
   bx_Header.html
   index.html
   bx_Footer.html

因此,页脚的 PHP 代码可以替换头部、主页面或页脚内部的占位符,只要这些占位符在该时刻仍然存在。

如果已加载的 HTML 中包含占位符 __MyTitle__,你可以在那里替换它:

$LayoutHTML = str_replace("__MyTitle__","My Custom Title",$LayoutHTML);

因此,页脚也适合于共同调整,这些调整仅在整个页面结构加载后进行。

执行顺序一目了然

关键规则是:PHP 只能通过 $LayoutHTML 更改此时已加载的 HTML 区域。

1. bx_Header.html
   PHP sieht: Header
        ↓
2. index.html
   PHP sieht: Header + Hauptseite
        ↓
3. bx_Footer.html
   PHP sieht: Header + Hauptseite + Footer

如果你希望从特定页面控制头部的占位符,你需要使用该主页面的 PHP 代码。如果希望在所有三个已加载区域中替换占位符,则建议使用最近执行的页脚的 PHP 代码。

自定义 PHP 函数的重要性

如果你在不同区域定义了自己的 PHP 函数,请注意在一次页面请求中不要多次定义相同的函数。为此,请选择唯一的函数名称或在定义之前检查函数是否已存在。

if(!function_exists("MyTemplateFunction")) {
   function MyTemplateFunction() {
      return true;
   }
}

总结

在我们的基础布局中,首先执行bx_Header.html的PHP代码,然后是index.html的PHP代码,最后是bx_Footer.html的PHP代码。每一步都扩展了你可以通过$LayoutHTML访问的HTML内容。

因此,将你的PHP代码放置在所需的HTML区域已经加载的位置:在头部进行头部特定的调整,在主页面添加自己的内容和之前加载的头部,或在底部修改已组合的布局。

常见问题

客户常问我们的问题

PHP脚本执行的顺序是什么?

首先执行bx_Header.html的PHP代码,然后是主页面的PHP代码,例如index.html,最后是bx_Footer.html的PHP代码。

在Header-PHP代码执行期间,$LayoutHTML包含哪些HTML区域?

在执行Header-PHP代码期间,$LayoutHTML仅包含从bx_Header.html加载的HTML内容。

主页面可以更改头部的HTML代码吗?

是的。当主页面的PHP代码执行时,头部和主页面已经包含在$LayoutHTML中。因此,你可以替换之前在头部创建的占位符。

为什么头部的PHP代码还不能更改底部?

底部在主页面之后才加载。因此,底部的HTML内容在Header-PHP代码执行期间还不在$LayoutHTML中。

底部的PHP代码可以更改哪些区域?

在底部执行时,$LayoutHTML已经包含了头部、主页面和底部。这些区域中仍然存在的占位符可以在这里替换。

我在哪里可以看到基础布局的结构?

布局定义在表00_layout中的示例中显示。它包含了bx_Header.html、当前主页面和bx_Footer.html。

我在哪里可以编辑bx_Header.html的PHP代码?

在文件管理器中选择bx_Header.html并打开PHP代码。

我在头部和主页面的自定义PHP函数中需要注意什么?

在页面请求期间,不能多次用相同的名称定义自定义函数。使用唯一的名称或在定义前用function_exists()检查函数是否已经存在。

CMS