ترتیب اجرای PHP: هدر، صفحه اصلی و فوتر
این آموزش توسعهدهنده به شما نشان میدهد که با استفاده از یک طرح اصلی با bx_Header.html، index.html و bx_Footer.html، چه زمانی اسکریپتهای PHP مختلف اجرا میشوند. شما میآموزید که محتویات $LayoutHTML به تدریج چگونه گسترش مییابد و کجا میتوانید تغییرات وابسته به صفحه یا جهانی را انجام دهید.
شرایط و هدف
برای این آموزش توسعهدهنده، شما باید بدانید که چگونه 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 فقط پس از آن که کد PHP بخشهای مختلف اجرا شد، به تدریج در $LayoutHTML بارگذاری میشود.
1. کد PHP هدر در ابتدا اجرا میشود.
در مدیریت فایل، فایل bx_Header.html را باز کنید. با استفاده از کد PHP میتوانید کد PHP این بخش را ویرایش کنید.
هدر نخستین بخش بارگذاری شده است. در حین اجرای کد PHP آن، $LayoutHTML فقط شامل HTML از bx_Header.html است.
PHP-Code: bx_Header.html
$LayoutHTML enthält:
bx_Header.html
شما میتوانید در اینجا به عنوان مثال placeholderهای هدر را تغییر دهید یا ناوبری را آماده کنید. در این مرحله هنوز نمیتوانید به محتوای واقعی HTML از index.html یا bx_Footer.html از طریق $LayoutHTML دسترسی پیدا کنید.
2. کد PHP صفحه اصلی پس از آن اجرا میشود
پس از هدر، CMS، صفحه اصلی فراخوانی شده، در این جا index.html، را بارگذاری و کد PHP آن را اجرا میکند. در این زمان، $LayoutHTML شامل کد HTML هدر و همچنین کد HTML صفحه اصلی است.
PHP-Code: index.html
$LayoutHTML enthält:
bx_Header.html
index.html
بنابراین، کد PHP صفحه اصلی میتواند نه تنها placeholderهای خود را جایگزین کند، بلکه placeholderهای موجود در داخل هدر را نیز تغییر دهد.
یک مثال: اگر هدر شما placeholder __HeaderClass__ را شامل باشد، میتوانید آن را از طریق صفحه اصلی جایگزین کنید:
$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);
بنابراین، یک صفحه اصلی مشخص میتواند به عنوان مثال، مورد منوی خود را در هدر بارگذاری شده به عنوان فعال علامتگذاری کند.
فوتر در این مرحله هنوز بارگذاری نشده است. بنابراین، محتوای HTML آن هنوز نمیتواند به طور قابل اعتمادی از طریق $LayoutHTML تغییر کند.
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 فوتر همچنین میتواند placeholderها را در داخل هدر، صفحه اصلی یا فوتر جایگزین کند، به شرطی که در آن زمان هنوز وجود داشته باشند.
اگر HTML بارگذاری شده قبلاً placeholder __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
اگر شما میخواهید که یک placeholder هدر را از یک صفحه خاص کنترل کنید، از کد PHP آن صفحه اصلی استفاده میکنید. اگر placeholder باید در تمام سه بخش بارگذاری شده جایگزین شود، کد PHP آخرین اجرا شده فوتر پیشنهاد میشود.
مهم در مورد توابع PHP شخصی
اگر در مناطق مختلف، توابع PHP شخصی تعریف میکنید، به یاد داشته باشید که همان تابع در طول یک بارخوانی صفحه چندین بار تعریف نشود. برای این کار از نامهای توابع منحصر به فرد استفاده کنید یا قبل از تعریف بررسی کنید که آیا تابع قبلاً وجود دارد.
if(!function_exists("MyTemplateFunction")) {
function MyTemplateFunction() {
return true;
}
}
خلاصه
در چیدمان پایهای ما ابتدا کد PHP از bx_Header.html اجرا میشود، سپس کد PHP از index.html و در نهایت کد PHP از bx_Footer.html اجرا میشود. با هر مرحله، محتوای HTML گسترش مییابد که میتوانید از طریق $LayoutHTML به آن دسترسی پیدا کنید.
بنابراین، کد PHP خود را در جایی قرار دهید که نواحی HTML مورد نیاز قبلاً بارگذاری شدهاند: در هدر برای تغییرات خاص هدر، در صفحه اصلی برای محتوای خود و هدر بارگذاری شده قبلی یا در فوتر برای تغییرات در چیدمان که قبلاً ترکیب شده است.
سوالات متداول
چه سوالاتی را مشتریان معمولاً از ما میپرسند
کدهای PHP به چه ترتیبی اجرا میشوند؟
ابتدا کد PHP از bx_Header.html اجرا میشود، سپس کد PHP صفحه اصلی، به عنوان مثال index.html، و در نهایت کد PHP از bx_Footer.html.
کدام نواحی HTML در $LayoutHTML هنگام اجرای کد PHP هدر وجود دارد؟
در حین اجرای کد PHP هدر، $LayoutHTML تنها محتوای HTML بارگذاری شده از bx_Header.html را شامل میشود.
آیا صفحه اصلی میتواند کد HTML هدر را تغییر دهد؟
بله. وقتی کد PHP صفحه اصلی اجرا میشود، هدر و صفحه اصلی قبلاً در $LayoutHTML وجود دارند. بنابراین میتوانید به عنوان مثال جایگزینی که قبلاً در هدر ایجاد کردهاید را جایگزین کنید.
چرا کد PHP هدر نمیتواند فوتر را تغییر دهد؟
فوتر تنها پس از صفحه اصلی بارگذاری میشود. محتوای HTML آن در حین اجرای کد PHP هدر هنوز در $LayoutHTML وجود ندارد.
چه نواحیای را میتوان با کد PHP فوتر تغییر داد؟
در زمان اجرای فوتر، $LayoutHTML قبلاً شامل هدر، صفحه اصلی و فوتر است. هنوز جاهای خالی موجود در این نواحی میتوانند آنجا جایگزین شوند.
کجا میتوانم ساختار چیدمان پایه را ببینم؟
تعریف چیدمان در مثال در جدول 00_layout نمایش داده میشود. این جدول bx_Header.html، صفحه اصلی فعلی و bx_Footer.html را شامل میشود.
کجا میتوانم کد PHP از bx_Header.html را ویرایش کنم؟
bx_Header.html را در مدیر فایل انتخاب کرده و کد PHP را باز کنید.
هنگام استفاده از توابع PHP شخصی در هدر و صفحه اصلی باید به چه نکاتی توجه کنم؟
توابع شخصی نباید در طول یک درخواست صفحه چندین بار با همان نام تعریف شوند. از نامهای منحصر به فرد استفاده کنید یا قبل از تعریف با function_exists() بررسی کنید که آیا تابع قبلاً وجود دارد.