这是bluetronix CMS中的站点渲染过程如何运作的
每次访问页面时,bluetronix CMS会经历多个处理步骤。在本教程中,你将了解完整的渲染过程,并了解何时进行安全检查、执行PHP脚本、替换布局变量以及生成最终的HTML页面。
1. 加载安全脚本
一开始,bluetronix CMS 加载安全相关的脚本。这包括安全检查、调用次数检查、MySQL 参数的准备或检查,以及 GET 和 POST 参数的分析。
不需要数据库连接的检查将在此处进行。
加载模块配置
如果存在,则加载文件 /bx_Mod/config_own.php。在其中定义的脚本和配置变量将在渲染过程开始时可用。
启动会话
CMS 使用 @session_start(); 启动 PHP 会话。特别重要的三个会话变量是:$_SESSION["S_User"] 用于 CMS 用户或编辑模式,$_SESSION["S_Language"] 用于当前语言,$_SESSION["Web_User"] 用于前端登录的用户。
加载页面参数
然后,CMS从服务器变量中读取当前调用的信息。$domain从$_SERVER["SERVER_NAME"]获取域名,$FileParameter从$_SERVER["REQUEST_URI"]获取请求路径及GET参数,$file从$_SERVER["PHP_SELF"]获取执行的文件路径。
$ReferURL包含$_SERVER["HTTP_REFERER"]的值(如果已传递)。它可以在加载框架或页面区域时使用。
建立数据库连接
CMS自动建立数据库连接。之后,CMS数据库表可用于进一步检查和加载页面内容。
重新检查 GET 和 POST 参数
在建立数据库连接后,CMS调用SECUREGetPost();。传递的GET和POST参数会重新检查并根据需要进行调整。现在也可以进行需要数据库信息的检查。
域名、编辑和语言重定向
根据CMS配置、调用的域名、编辑模式、选择的语言和调用参数,可能会进行重定向。可能的目标包括主域名、编辑域名以及依赖语言的域名或URL。
HTTPS重定向
如果网站未通过HTTPS访问,则会重定向到该页面的SSL或HTTPS版本。
加载中央 PHP 脚本
现在,CMS加载其核心PHP功能。这包括例如用于发送邮件的BlueSMTPMail()和用于处理表单的BlueFormSend()。其他核心功能也会被引入。
从 00_site 加载页面数据
请求页面的数据从数据库表00_site读取。此时,CMS变量如$Template被确定。
此外,$LayoutHTML和$SitePHP也会被初始化。$LayoutHTML稍后包含完整的HTML布局,而$SitePHP包含直接与请求页面相关的PHP代码。
从 00_layout 加载布局
与页面关联的布局从数据库表00_layout加载,并作为后续处理在$LayoutHTML中的基础。
设置语言依赖的 JavaScript 文件
如果存在特定语言的文件,CMS可以用相应语言的变体替换标准文件BxScript.js和BxHeadScript.js,例如BxScript_de.js或BxScript_en.js。
在此,文件标记 __FV_/bx_script/BxScript_own_min.js__ 或 __FV_/bx_script/BxHeadScript_own_min.js__ 在布局中进行调整.
生成头部和动态内容
现在生成动态内容并执行特定于页面的PHP脚本。DynMenue()生成动态菜单,IncludeModul()包含已配置的模块,EditMARK()设置CMS的编辑标记。
使用eval($SitePHP)执行当前页面的PHP代码;eval($IncludePHP)执行包含的PHP脚本。
设置 CSS 和 JavaScript 的更改参数
对于CSS和JavaScript文件,设置了更改参数。这样,当文件更新时,浏览器可以加载新版本,而不是使用缓存中已过时的文件。
例如,从文件引用/css/style.css可能变为带有版本参数的调用/css/style.css?v2026...。
设置暗模式或亮模式
CMS从/bx_style/BxSource/CSSEditDarkLight.bx中读取配置的显示模式。根据文件内容在布局中设置黑暗或明亮模式。
在布局中设置模块配置变量
来自/bx_Mod/config_own.php的模块配置将应用于布局。如果例如商店、搜索、登录或翻译模块被禁用,则相关控件可以被自动隐藏。
因此,标记如 __DB_GB_DesktopIconBasket_Display__、__DB_GB_DesktopIconSearch_Display__、__DB_GB_DesktopIconLogin_Display__ 或 __DB_GB_DesktopIconLang_Display__ 会被替换为 none.
移除剩余的替代标记
未替换的 CMS 占位符将从最终的 HTML 中删除。这包括格式为 __DB_...__ 和 __ST_...__ 的标记以及为此预留的内部 xxx 注释标记.
移除 HTML 注释
随后,CMS从$LayoutHTML中移除HTML注释。这样,过多的注释文本就不会发送给浏览器。
进行语言翻译
如果$_SESSION["S_Language"]不等于$GBMainLang,则被标记的文本将翻译为当前使用的语言。翻译来自数据库表Translation。
如果所需文本尚未存在,将在Translation中生成新条目。CMS通过标记My Text识别可翻译的内容。My Text.
通过 IMG.pl 替换图片调用
通过之前生成或优化的图像文件替换图像请求和图像剪裁通过IMG.pl完成。这样,生成的HTML页面可以直接访问这些图像变体。
输出完成页面
处理完成后,$LayoutHTML 将以内容类型 text/html; charset=utf-8 输出到浏览器,例如通过 print $LayoutHTML;.
对于未激活或内部域,输出将标记为 noindex, nofollow,以防止这些页面被搜索引擎索引.
写入缓存
在页面输出后,CMS 可以将生成的页面缓存。前提是没有 S_User 登录,页面不处于编辑模式,并且该页面已启用缓存.
在后续访问时,可以使用保存的 HTML 页面,而无需重新执行完整的渲染过程.
常见问题
客户常问我们的问题
什么是站点渲染过程?
该教程指的是通过处理步骤,bluetronix CMS 将页面和布局数据生成最终的 HTML 页面并输出到浏览器.
在数据库连接之前进行哪些安全检查?
在数据库连接之前,将进行安全检查、调用次数检查、MySQL 参数准备以及 GET 和 POST 参数分析.
模块配置何时加载?
文件 /bx_Mod/config_own.php(如果存在)将在会话开始之前和数据库连接建立之前加载.
S_User、S_Language 和 Web_User 用于什么?
S_User 表示 CMS 用户或编辑模式,S_Language 表示网页的当前语言,而 Web_User 表示前端登录的用户.
页面和布局来自哪些数据库表?
页面数据从 00_site 加载。相应的布局从 00_layout 读取,并在 $LayoutHTML 中处理.
页面的 PHP 代码何时执行?
在生成头部和动态内容时,页面的代码通过 eval($SitePHP) 执行,嵌入的 PHP 代码通过 eval($IncludePHP) 执行.
何时使用语言相关的 JavaScript 文件?
如果有相应的语言变体,BxScript.js 和 BxHeadScript.js 可以由对应的语言特定文件替换.
如何确定深色或浅色模式?
CMS 会读取文件 /bx_style/BxSource/CSSEditDarkLight.bx,并根据其内容设置布局的显示模式.
何时自动翻译文本?
如果当前语言与 $GBMainLang 不同,则根据 Translation 表中的条目翻译相应标记的文本.
在什么条件下生成的页面会被缓存?
如果未登录 S_User,页面不处于编辑模式,并且已针对该页面启用缓存,则可以写入缓存.