bluetronix CMSにおけるサイトレンダリングプロセスの仕組み
ページがリクエストされるたびに、bluetronix CMSは複数の処理ステップを経ます。このチュートリアルでは、完全なレンダリングプロセスを学び、セキュリティチェックが行われるタイミング、PHPスクリプトが実行されること、レイアウト変数が置き換えられること、そして完成したHTMLページが生成されることを理解できます。
1. セキュリティスクリプトを読み込む
はじめに、bluetronix CMSはセキュリティ関連のスクリプトを読み込みます。これには、セキュアチェック、呼び出し回数の確認、MySQLパラメータの準備または確認、GETおよびPOSTパラメータの分析が含まれます。
データベース接続を必要としないチェックは、この時点ですでに実行されます。
2. モジュール設定を読み込む
存在する場合、ファイル/bx_Mod/config_own.phpが読み込まれます。ここで定義されたスクリプトと設定変数は、レンダリングプロセスの開始時にすでに利用可能です。
3. セッションを開始する
CMSは@session_start();でPHPセッションを開始します。この際、特に重要なセッション変数は3つあります:$_SESSION["S_User"]はCMSユーザーまたは編集モード、$_SESSION["S_Language"]は現在の言語、$_SESSION["Web_User"]はフロントエンドログインのユーザーです。
4. ページパラメータを読み込む
その後、CMSはサーバー変数から現在の呼び出しに関する情報を読み取ります。$domainは$_SERVER["SERVER_NAME"]からドメイン名を取得し、$FileParameterは$_SERVER["REQUEST_URI"]からGETパラメータを含むリクエストパスを取得し、$fileは$_SERVER["PHP_SELF"]から実行されたファイルパスを取得します。
$ReferURL は $_SERVER["HTTP_REFERER"] の値を含みます。これは、フレームやページセクションの読み込みに使用される場合があります。
5. データベース接続を確立する
CMSは自動的にデータベース接続を確立します。その後、CMSデータベーステーブルがさらなる検証やページコンテンツの読み込みに利用可能になります。
6. GETおよびPOSTパラメータを再確認する
データベース接続が確立された後、CMSは SECUREGetPost(); を呼び出します。渡されたGETおよびPOSTパラメータは再度検証され、必要に応じて調整されます。これにより、データベース情報を必要とする検証が可能になります。
7. ドメイン、編集、言語リダイレクト
CMSの設定、呼び出されたドメイン、編集モード、選択された言語、および呼び出しパラメータに応じて、リダイレクトが行われる場合があります。可能なターゲットは、メインドメイン、編集ドメイン、および言語依存のドメインやURLです。
8. HTTPSリダイレクト
HTTPSなしでウェブサイトが呼び出された場合、SSLまたはHTTPSバージョンへリダイレクトされます。
9. 中央のPHPスクリプトを読み込む
CMSは現在、中心的なPHP機能を読み込みます。これには、メール送信のための BlueSMTPMail() やフォーム処理のための BlueFormSend() などが含まれます。さらに中心的な機能も読み込まれます。
10. 00_siteからページデータを読み込む
要求されたページのデータは、データベーステーブル 00_site から読み取られます。この際、CMS変数である $Template が特定されます。
また、$LayoutHTML と $SitePHP が初期化されます。$LayoutHTML には後に完全なHTMLレイアウトが含まれ、$SitePHP には直接呼び出されたページに関連するPHPコードが含まれます。
11. 00_layoutからレイアウトを読み込む
ページに割り当てられたレイアウトは、データベーステーブル 00_layout から読み込まれ、$LayoutHTML 内でのさらなる処理の基盤を形成します。
12. 言語依存の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__が調整されます。
13. ヘッダーと動的コンテンツを生成する
現在、動的コンテンツが生成され、ページ固有のPHPスクリプトが実行されます。DynMenue() が動的メニューを生成し、IncludeModul() が構成されたモジュールを組み込み、EditMARK() がCMSの編集マーカーを設定します。
eval($SitePHP) により、現在のページのPHPコードが実行され、eval($IncludePHP) により組み込まれたPHPスクリプトが実行されます。
14. CSSとJavaScriptの変更パラメータを設定する
CSSおよびJavaScriptファイルには変更パラメータが設定されます。これにより、ブラウザは更新されたファイルから新しいバージョンを読み込み、古いファイルをキャッシュから使用しません。
例えば、ファイル参照 /css/style.css からバージョンパラメータ /css/style.css?v2026... を付加した呼び出しが生成される可能性があります。
15. ダークモードまたはライトモードを設定する
CMSは /bx_style/BxSource/CSSEditDarkLight.bx から設定された表示モードを読み取ります。ファイル内容に応じて、ダークモードまたはライトモードがレイアウトに設定されます。
16. モジュール設定変数をレイアウトに設定する
/bx_Mod/config_own.php からのモジュール設定がレイアウトに適用されます。例えば、ショップ、検索、ログイン、または翻訳モジュールが無効になっている場合、関連する操作要素は自動的に非表示にされる可能性があります。
そのため、レイアウトマーク__DB_GB_DesktopIconBasket_Display__、__DB_GB_DesktopIconSearch_Display__、__DB_GB_DesktopIconLogin_Display__、または__DB_GB_DesktopIconLang_Display__はnoneに置き換えられます。
17. 残りの代替マークを削除する
置き換えられないCMSプレースホルダーは、完成したHTMLから削除されます。これには、__DB_...__および__ST_...__パターンに従ったマークや、これらに関連する内部xxxコメントマークが含まれます。
18. HTMLコメントを削除する
CMSはその後、$LayoutHTML からHTMLコメントを削除します。これにより、不必要なコメントテキストがブラウザに配信されません。
19. 言語翻訳を行う
$_SESSION["S_Language"] が $GBMainLang と異なる場合、マークされたテキストは現在使用されている言語に翻訳されます。翻訳はデータベーステーブル Translation から取得されます。
必要なテキストがそこでまだ存在しない場合、新しいエントリが Translation に作成されます。CMSは、My Text と によって翻訳可能なコンテンツを認識します。My Text画像呼び出しや画像トリミングは IMG.pl を通じて事前に生成されたまたは最適化された画像ファイルに置き換えられます。これにより、完成したHTMLページはこれらの画像バリアントに直接アクセスできます。
20. 画像呼び出しをIMG.plに置き換える
処理が完了すると、$LayoutHTML が内容タイプ text/html; charset=utf-8 でブラウザに出力されます。例えば、print $LayoutHTML; を通じて。
21. 完成したページを出力する
処理が完了すると、$LayoutHTMLはコンテンツタイプtext/html; charset=utf-8でブラウザに出力されます。たとえば、print $LayoutHTML;によって出力されます。
非アクティブまたは内部ドメインの場合、出力にはnoindex, nofollowが付けられ、これらのページが検索エンジンにインデックスされないようにします。
22. キャッシュを記述する
ページ出力後、CMSは作成されたページをキャッシュに保存できます。条件として、S_Userがログインしておらず、ページが編集モードでないこと、及びこのページのキャッシングが有効である必要があります。
後の呼び出しでは、保存されたHTMLページを使用でき、完全なレンダリングプロセスを再実行する必要はありません。
FAQ
お客様からよくある質問
サイトレンダリングプロセスとは何ですか?
このチュートリアルは、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がログインしておらず、ページが編集モードでなく、このページのキャッシングが有効な場合に書き込むことができます。