PHP:n suoritusjärjestys: Otsikko, pääsivu ja alatunniste
Tämä kehittäjätutorial näyttää sinulle peruslayoutin avulla bx_Header.html, index.html ja bx_Footer.html, milloin yksittäiset PHP-skriptit suoritetaan. Opit, miten $LayoutHTML:n sisältö laajenee vaihe vaiheelta ja missä voit tehdä sivukohtaisia tai globaalisia muutoksia.
Vaatimukset ja tavoite
Tässä kehittäjäoppaassa sinun tulisi tietää, kuinka bluetronix CMS kokoaa sivun sen ulkoasusta, pääsisältöosasta, headerista ja footerista. Näytämme sinulle, missä järjestyksessä näiden alueiden PHP-skriptit suoritetaan ja mitkä osat $LayoutHTML:stä on jo ladattu.
Esimerkissä peruspohja koostuu CMS-tiedostoista bx_Header.html, index.html ja bx_Footer.html. Pääsivu index.html edustaa kutakin kutsuttua HTML-sivua.
Peruslayout: Otsikko, pääsivu ja alatunniste
Peruspohja määrittää, missä järjestyksessä kolme aluetta liitetään. Näytetyssä esimerkissä löydät ulkoasun määrittelyn taulukosta 00_layout.
Ulkoasun relevantti osa näyttää tältä:
__DB_Layout_/bx_Header.html__
<main>
__DB_Layout_Main__
</main>
__DB_Layout_/bx_Footer.html__
Ensimmäinen paikkamerkki liittää bx_Header.html tiedoston. main-elementin sisällä __DB_Layout_Main__ liittää nykyisen auki olevan sivun, meidän esimerkissämme index.html. Tämän jälkeen seuraa bx_Footer.html.
Vaikka ulkoasun määrittely sisältää kaikki kolme aluetta, kunkin alueen PHP-koodin HTML-sisältö ladataan $LayoutHTML:iin vain vähitellen.
1. Otsikon PHP-koodi suoritetaan ensin
Avaa tiedostohallinnassa tiedosto bx_Header.html. PHP-koodin avulla voit muokata tämän alueen PHP-koodia.
Header on ensimmäinen ladattu sivualue. Kun sen PHP-koodia suoritetaan, $LayoutHTML sisältää vain HTML:n bx_Header.html:stä.
PHP-Code: bx_Header.html
$LayoutHTML enthält:
bx_Header.html
Voit esimerkiksi tässä korvata headerin paikkamerkkejä tai valmistella navigaatiota. Eri HTML-sisältöön index.html:stä tai bx_Footer.html:stä et voi vielä tähän kohtaan päästä käsiksi $LayoutHTML:lla.
2. Pääsivun PHP-koodi suoritetaan sen jälkeen
Headerin jälkeen CMS lataa kutsutun pääsivun, tässä index.html, ja suorittaa sen PHP-koodin. Tässä vaiheessa $LayoutHTML sisältää sekä headerin että pääsivun HTML-koodin.
PHP-Code: index.html
$LayoutHTML enthält:
bx_Header.html
index.html
Näin ollen pääsivun PHP-koodi voi paitsi korvata omia paikkamerkkejä myös muuttaa jo olemassa olevia paikkamerkkejä headerissa.
Esimerkki: Jos headerisi sisältää paikkamerkin __HeaderClass__, voit korvata sen pääsivulta:
$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);
Näin tietty pääsivu voi esimerkiksi merkitä menuvalintansa aktiiviseksi jo ladatussa headerissa.
Footeria ei ole tähän mennessä ladattu. Sen HTML-sisältöä ei siksi voi vielä luotettavasti muuttaa $LayoutHTML:lla.
3. Footerin PHP-koodi suoritetaan viimeiseksi
Viimeisenä CMS lataa bx_Footer.html:n ja suorittaa sen PHP-koodin. Nyt $LayoutHTML sisältää kaikkien kolmen alueen HTML-sisällöt.
PHP-Code: bx_Footer.html
$LayoutHTML enthält:
bx_Header.html
index.html
bx_Footer.html
Footerin PHP-koodi voi siksi korvata paikkamerkkejä headerissa, pääsivussa tai footerissa, jos ne ovat vielä olemassa.
Jos ladattu HTML esimerkiksi sisältää paikkamerkin __MyTitle__, voit korvata sen siellä:
$LayoutHTML = str_replace("__MyTitle__","My Custom Title",$LayoutHTML);
Footer soveltuu siten myös yhteisiin muokkauksiin, jotka tulisi tehdä vasta koko sivurakenteen lataamisen jälkeen.
Suoritusjärjestys yhdellä silmäyksellä
Keskeinen sääntö kuuluu: PHP voi muuttaa $LayoutHTML:ssä vain ne HTML-alueet, jotka on jo ladattu tähän aikaan.
1. bx_Header.html
PHP sieht: Header
↓
2. index.html
PHP sieht: Header + Hauptseite
↓
3. bx_Footer.html
PHP sieht: Header + Hauptseite + Footer
Jos haluat esimerkiksi hallita headerin paikkamerkkiä tietystä sivusta, käytät tämän pääsivun PHP-koodia. Jos paikkamerkkiä halutaan korvata kaikissa kolmessa jo ladatussa alueessa, viimeiseksi suoritetun footerin PHP-koodi on hyvä valinta.
Tärkeitä asioita omissa PHP-toiminnoissa
Kun määrität erilaisilla alueilla omia PHP-toimintoja, varmista, että samaa toimintoa ei määritetä useita kertoja sivukutsun aikana. Valitse selkeitä toimintonimiä tai tarkista ennen määrittelyä, onko funktio jo olemassa.
if(!function_exists("MyTemplateFunction")) {
function MyTemplateFunction() {
return true;
}
}
Yhteenveto
Peruslayoutissamme PHP-koodi suoritetaan ensin bx_Header.html-tiedostosta, sen jälkeen index.html-tiedostosta ja lopuksi bx_Footer.html-tiedostosta. Jokaisella askelella HTML-sisältö laajenee, johon voit päästä käsiksi $LayoutHTML:n kautta.
Aseta PHP-koodisi sinne, missä tarvittavat HTML-alueet on jo ladattu: Headerissä header-spesifisiä mukautuksia varten, pääsivulla omia sisältöjä varten ja edeltä ladatulle headerille tai footerissa jo koostetun layoutin muutoksia varten.
UKK
mitä asiakkaat meiltä usein kysyvät
Missä järjestyksessä PHP-skriptit suoritetaan?
Ensin suoritetaan PHP-koodi bx_Header.html-tiedostosta, sitten pääsivun PHP-koodi, esimerkiksi index.html-tiedostosta, ja viimeisenä PHP-koodi bx_Footer.html-tiedostosta.
Mitä HTML-alueita $LayoutHTML sisältää header-PHP-koodin aikana?
Header-PHP-koodin suorittamisen aikana $LayoutHTML sisältää vain jo ladatun HTML-sisällön bx_Header.html-tiedostosta.
Voiko pääsivu muuttaa headerin HTML-koodia?
Kyllä. Kun pääsivun PHP-koodia suoritetaan, header ja pääsivu ovat jo $LayoutHTML:ssä. Tämän avulla voit esimerkiksi korvata aiemmin headerissa määritellyn paikan.
Miksi header-PHP-koodi ei voi vielä muuttaa footeria?
Footer ladataan vasta pääsivun jälkeen. Sen HTML-sisältö ei ole vielä $LayoutHTML:ssä header-PHP-koodin aikana.
Mitä alueita footer-PHP-koodi voi muuttaa?
Footerin suorittamisen aikana $LayoutHTML sisältää jo headerin, pääsivun ja footerin. Näissä alueissa olevat vielä löytyvät paikat voidaan korvata.
Mistä näen peruslayoutin rakenteen?
Layout-määrittely näytetään esimerkissä taulukossa 00_layout. Se liittää bx_Header.html, nykyisen pääsivun ja bx_Footer.html.
Missä voin muokata bx_Header.html PHP-koodia?
Valitse bx_Header.html Tiedostonhallinnasta ja avaa PHP-koodi.
Mitä minun on otettava huomioon omissa PHP-toiminnoissani headerissa ja pääsivulla?
Omat funktiot eivät saa olla määriteltyinä useaan kertaan saman nimen alla yhden sivupyynnön aikana. Käytä yksilöllisiä nimiä tai tarkista ennen määrittelyä function_exists():lla, onko funktio jo olemassa.