PHP végrehajtási sorrend: Fejléc, főoldal és lábléc
Ez a fejlesztői útmutató egy alapelrendezés segítségével bemutatja, a bx_Header.html, index.html és bx_Footer.html fájlokkal, mikor kerülnek végrehajtásra az egyes PHP-skriptek. Megtudhatod, hogyan bővül lépésről lépésre a $LayoutHTML tartalma, és hol végezhetsz oldalfüggő vagy globális módosításokat.
Követelmények és cél
Ehhez a fejlesztői oktatóanyaghoz tudnod kell, hogy a bluetronix CMS hogyan állítja össze az oldalt a layoutjából, a fejlécből, a főoldalból és a láblécből. Megmutatjuk, milyen sorrendben hajtódnak végre ezen területek PHP-skriptjei, és hogy $LayoutHTML milyen részei töltődtek be eddig.
A példában az alaplayout a CMS fájlokból áll: bx_Header.html, index.html és bx_Footer.html. A főoldal, index.html, az aktuálisan hívott HTML-oldalt képviseli.
Alapelrendezés: Fejléc, főoldal és lábléc
Az alaplayout határozza meg, hogy a három terület milyen sorrendben kerül beillesztésre. A bemutatott példában a layout-definíció az 00_layout táblázatban található.
A layout releváns részlete így néz ki:
__DB_Layout_/bx_Header.html__
<main>
__DB_Layout_Main__
</main>
__DB_Layout_/bx_Footer.html__
Az első helyettesítő a bx_Header.html fájlt ágyazza be. A main elem belsejében a __DB_Layout_Main__-on keresztül a éppen elérhető oldal van beszúrva, például a index.html. Ezt követi a bx_Footer.html.
Bár a layout-definíció mindhárom területet tartalmazza, a különböző területek PHP-kódjához tartozó HTML tartalmak egyesével töltődnek be $LayoutHTML-be.
1. A fejléc PHP-kódja először kerül végrehajtásra.
Nyisd meg a Fájlkezelőben a bx_Header.html fájlt. A PHP kód segítségével szerkesztheted ennek a területnek a PHP-kódját.
A fejléc az első betöltött oldalrész. Amíg a PHP-kódja fut, $LayoutHTML ezért csak a bx_Header.html HTML-jét tartalmazza.
PHP-Code: bx_Header.html
$LayoutHTML enthält:
bx_Header.html
Itt például a fejléc helyőrzőit cserélheted ki, vagy előkészítheted a navigációt. Az aktuális HTML tartalom, ami a index.html-től vagy a bx_Footer.html-től származik, ezen a helyen még nem érhető el a $LayoutHTML-n keresztül.
2. A főoldal PHP-kódja ezután kerül végrehajtásra.
A fejléc után a CMS betölti az aktuálisan hívott főoldalt, itt index.html-t, és végrehajtja annak PHP-kódját. Ekkor $LayoutHTML tartalmazza a fejléc és a főoldal HTML-kódját is.
PHP-Code: index.html
$LayoutHTML enthält:
bx_Header.html
index.html
Így a főoldal PHP-kódja nemcsak a saját helyőrzőit cserélheti ki, hanem a már meglévő helyőrzőket is módosíthatja a fejlécben.
Például: Ha a fejléc tartalmaz egy __HeaderClass__ helyőrzőt, azt a főoldalról ki tudod cserélni:
$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);
Ez lehetővé teszi, hogy egy adott főoldal a már betöltött fejlécre a menüpontját aktívvá tegye.
A lábléc ez idő alatt még nem volt betöltve. HTML tartalmát ezért még nem lehet megbízhatóan módosítani a $LayoutHTML segítségével.
A lábléc PHP-kódja a végén fut le.
Utolsó lépésként a CMS betölti a bx_Footer.html-t, és végrehajtja annak PHP-kódját. Ekkor $LayoutHTML tartalmazza mindhárom terület HTML-tartalmát.
PHP-Code: bx_Footer.html
$LayoutHTML enthält:
bx_Header.html
index.html
bx_Footer.html
A lábléc PHP-kódja így helyőrzőket cserélhet ki a fejlécben, a főoldalon vagy a láblécben, amennyiben azok ekkor már léteznek.
Ha a már betöltött HTML például tartalmazza a __MyTitle__ helyőrzőt, azt ott ki tudod cserélni:
$LayoutHTML = str_replace("__MyTitle__","My Custom Title",$LayoutHTML);
A lábléc így átfogó módosításokra is alkalmas, amelyeket csak a teljes oldalstruktúra betöltése után kell elvégezni.
A végrehajtási sorrend áttekintése.
A döntő szabály a következő: A PHP csak azokat a HTML-területeket tudja módosítani a $LayoutHTML-on keresztül, amelyek már be vannak töltve.
1. bx_Header.html
PHP sieht: Header
↓
2. index.html
PHP sieht: Header + Hauptseite
↓
3. bx_Footer.html
PHP sieht: Header + Hauptseite + Footer
Ha például egy fejléc helyőrzőt szeretnél vezérelni egy adott oldalról, használd ennek a főoldalnak a PHP-kódját. Ha egy helyőrzőt az összes három már betöltött területen kívánsz kicserélni, a lábléc utoljára végrehajtott PHP-kódja a megfelelő választás.
Fontos a saját PHP-funkciókhoz.
Ha különböző területeken saját PHP-funkciókat definiálsz, ügyelj arra, hogy ugyanazt a funkciót egy oldalhívás során ne definiáld többször. Ehhez válassz egyedi funkcióneveket, vagy ellenőrizd a definálás előtt, hogy a funkció már létezik-e.
if(!function_exists("MyTemplateFunction")) {
function MyTemplateFunction() {
return true;
}
}
Összefoglalás
Az alaplayoutban először a bx_Header.html PHP-kódja fut le, utána a index.html PHP-kódja, végül a bx_Footer.html PHP-kódja. Minden lépéssel bővül az a HTML-tartalom, amelyhez a $LayoutHTML segítségével hozzáférhetsz.
Helyezd el a PHP-kódodat tehát ott, ahol a szükséges HTML-területek már betöltődtek: a fejlécben a fejléc-specifikus módosításokhoz, a főoldalon saját tartalmakhoz és a korábban betöltött fejléchez, vagy a láblécben a már összeállított elrendezés módosításaihoz.
GYIK
Miket kérdeznek tőlünk gyakran az ügyfelek?
Milyen sorrendben futnak a PHP-scriptek?
Először a PHP-kód a bx_Header.html fájlból fut le, ezt követi a főoldal PHP-kódja, például a index.html, végül pedig a PHP-kód a bx_Footer.html fájlból.
Milyen HTML-területek vannak a $LayoutHTML-ban a Header-PHP-kód futása alatt?
A fejléc PHP-kódjának futása alatt a $LayoutHTML csak a már betöltött HTML-tartalmat tartalmazza a bx_Header.html-ból.
Megváltoztathatja a főoldal a fejléc HTML-kódját?
Igen. Amikor a főoldal PHP-kódja fut, a fejléc és a főoldal már benne van a $LayoutHTML-ban. Így például egy korábban a fejlécben létrehozott helyőrzőt is kicserélhetsz.
Miért nem tudja a Header-PHP-kód még a láblécet megváltoztatni?
A lábléc csak a főoldal betöltése után kerül betöltésre. HTML-tartalma a fejléc PHP-kódja alatt még nincs benne a $LayoutHTML-ban.
Milyen területeket tud megváltoztatni a Footer-PHP-kód?
A lábléc végrehajtásának időpontjában a $LayoutHTML már tartalmazza a fejlécet, a főoldalt és a láblécet. Az ezekben a területekben még meglévő helyőrzőket ott lehet kicserélni.
Hol láthatom az alapelrendezés felépítését?
A layout-definíciót a példa a 00_layout táblázatban mutatja. Beilleszti a bx_Header.html fájlt, a jelenlegi főoldalt és a bx_Footer.html fájlt.
Hol szerkeszthetem a bx_Header.html PHP-kódját?
Válaszd ki a bx_Header.html-t a Fájlkezelőben, és nyisd meg a PHP Kód opciót.
Mire kell figyelnem a saját PHP-funkcióimnál a fejlécben és a főoldalon?
A saját funkciókat nem szabad többször ugyanazzal a névvel definiálni egy oldalbetöltés során. Használj egyedi neveket, vagy ellenőrizd a function_exists() segítségével, hogy a funkció már létezik-e.