روش کار فرآیند رندرینگ سایت در bluetronix CMS
در هر بار باز کردن صفحه، bluetronix CMS چندین مرحله پردازش را طی میکند. در این آموزش، فرآیند کامل رندرینگ را یاد میگیری و میفهمی که چه زمانی بررسیهای امنیتی انجام میشود، اسکریپتهای PHP اجرا میشوند، متغیرهای طرح جایگزین میشوند و صفحات HTML نهایی تولید میشوند.
1. بارگذاری اسکریپتهای امنیتی
در ابتدا، CMS بلوترونیکس اسکریپتهای مربوط به امنیت را بارگذاری میکند. این شامل چک امنیتی، بررسی تعداد فراخوان، آمادهسازی و بررسی پارامترهای MySQL و تحلیل پارامترهای GET و POST است.
بررسیهایی که به ارتباط با پایگاه داده نیاز ندارند، در این مرحله انجام میشود.
2. بارگذاری پیکربندی ماژول
در صورت وجود، فایل /bx_Mod/config_own.php بارگذاری میشود. اسکریپتها و متغیرهای پیکربندی تعریفشده در آن، در آغاز فرآیند رندرینگ در دسترس خواهند بود.
راهاندازی جلسه ۳.
CMS جلسه PHP را با @session_start(); راهاندازی میکند. در اینجا سه متغیر جلسه مهم است: $_SESSION["S_User"] برای کاربر CMS یا حالت ویرایش، $_SESSION["S_Language"] برای زبان فعلی و $_SESSION["Web_User"] برای کاربر ورود بهfrontend.
بارگذاری پارامترهای صفحه ۴.
سپس CMS اطلاعات مربوط به فراخوان فعلی را از متغیرهای سرور میخواند. $domain نام دامنه را از $_SERVER["SERVER_NAME"] دریافت میکند، $FileParameter مسیر درخواست شامل پارامترهای GET را از $_SERVER["REQUEST_URI"] و $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() برای پردازش فرمها شامل میشود. توابع مرکزی دیگری نیز گنجانده میشوند.
بارگذاری دادههای صفحه از ۰۰_site ۱۰.
دادههای صفحه درخواست شده از جدول پایگاه داده 00_site خوانده میشوند. در اینجا متغیرهای CMS مانند $Template تعیین میشوند.
علاوه بر این، $LayoutHTML و $SitePHP مقداردهی اولیه میشوند. $LayoutHTML بعداً شامل ساختار کامل HTML خواهد بود، در حالی که $SitePHP شامل کد PHP است که به طور مستقیم به صفحه فراخوانی شده تعلق دارد.
بارگذاری طراحی از ۰۰_layout ۱۱.
طراحی اختصاص داده شده به صفحه از جدول پایگاه داده 00_layout بارگذاری شده و پایه ادامه پردازش در $LayoutHTML را تشکیل میدهد.
تنظیم فایلهای جاوااسکریپت وابسته به زبان ۱۲.
اگر فایلهای خاص زبان موجود باشد، 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 سپس نظرات HTML را از $LayoutHTML حذف میکند. به این ترتیب متنهای کامنت غیرضروری به مرورگر ارسال نمیشوند.
انجام ترجمه زبانی ۱۹.
اگر $_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 مشخص میشود تا این صفحات توسط موتورهای جستجو ایندکس نشوند.
نوشتن کش ۲۲.
پس از تولید صفحه، سیستم مدیریت محتوا میتواند صفحه آماده شده را در کش ذخیره کند. پیشنیاز این است که هیچ S_User وارد سیستم نشده باشد، صفحه در حالت ویرایش نباشد و کشینگ برای این صفحه فعال باشد.
در بازدیدهای بعدی، میتوان از صفحه HTML ذخیره شده استفاده کرد، بدون اینکه دوباره تمام فرآیند رندرینگ انجام شود.
سوالات متداول
چه سوالاتی را مشتریان معمولاً از ما میپرسند
فرآیند رندرینگ سایت چیست؟
این آموزش به مراحل پردازش اشاره دارد که سیستم مدیریت محتوا bluetronix از دادههای صفحه و قالب، صفحه HTML نهایی را تولید و برای مرورگر ارسال میکند.
چه بررسیهای امنیتی قبل از اتصال به پایگاه داده انجام میشود؟
قبل از اتصال به پایگاه داده، بررسیهایی از جمله Secure Check، بررسی تعداد بازدیدها، آمادهسازی پارامترهای 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 را با فایلهای مختص زبان جایگزین کرد.
چگونه حالت تاریک یا روشن تعیین میشود؟
سیستم مدیریت محتوا فایل /bx_style/BxSource/CSSEditDarkLight.bx را میخواند و بر اساس محتوای آن حالت نمایش را در قالب تنظیم میکند.
کی متون به طور خودکار ترجمه میشوند؟
اگر زبان فعلی با $GBMainLang متفاوت باشد، متون مشخص شده بر اساس ورودیهای جدول Translation ترجمه میشوند.
در چه شرایطی صفحه نهایی کش میشود؟
کش میتواند نوشته شود اگر هیچ S_User وارد نشده باشد، صفحه در حالت ویرایش نباشد و کشینگ برای این صفحه فعال شده باشد.