PHP-kjøringsrekkefølge: Header, hovedside og footer.
Denne utviklerveiledningen viser deg ved hjelp av et grunnlayout med bx_Header.html, index.html og bx_Footer.html, når de enkelte PHP-skriptene kjøres. Du vil lære hvordan innholdet i $LayoutHTML utvides trinn for trinn, og hvor du kan gjøre sideavhengige eller globale endringer.
Krav og mål
For denne utviklerveiledningen bør du vite hvordan bluetronix CMS setter sammen en side av layoutet, headeren, hovedsiden og footeren. Vi viser deg, i hvilken rekkefølge PHP-skriptene i disse områdene kjøres og hvilke deler av $LayoutHTML som allerede er lastet.
I eksemplet består grunnlayouten av CMS-filene bx_Header.html, index.html og bx_Footer.html. Hovedsiden index.html representerer den HTML-siden som blir kalt.
Grunnlayout: Header, hovedside og footer.
Grunnlayouten bestemmer i hvilken rekkefølge de tre områdene blir inkludert. I det viste eksempelet finner du layoutdefinisjonen i tabellen 00_layout.
Det relevante utdraget av layouten ser slik ut:
__DB_Layout_/bx_Header.html__
<main>
__DB_Layout_Main__
</main>
__DB_Layout_/bx_Footer.html__
Den første plassholderen binder inn bx_Header.html. Innenfor main-elementet blir den nåværende siden knyttet inn gjennom __DB_Layout_Main__, i vårt eksempel index.html. Deretter følger bx_Footer.html.
Selv om layoutdefinisjonen inneholder alle tre områdene, blir den respektive HTML-innholdet for PHP-koden i de enkelte områdene først lastet gradvis i $LayoutHTML.
1. PHP-koden til headeren kjøres først.
Åpne i Filbehandler filen bx_Header.html. Via PHP-kode kan du redigere PHP-koden for dette området.
Headeren er det første lastede sideområdet. Mens PHP-koden dens kjøres, inneholder $LayoutHTML derfor kun HTML fra bx_Header.html.
PHP-Code: bx_Header.html
$LayoutHTML enthält:
bx_Header.html
Du kan her for eksempel erstatte plassholdere i headeren eller forberede navigasjonen. Den faktiske HTML-innholdet fra index.html eller bx_Footer.html kan du ennå ikke aksessere via $LayoutHTML.
2. PHP-koden til hovedsiden kjøres deretter.
Etter headeren laster CMS den kalte hovedsiden, her index.html, og kjører dens PHP-kode. På dette tidspunktet inneholder $LayoutHTML både HTML-koden til headeren og HTML-koden til hovedsiden.
PHP-Code: index.html
$LayoutHTML enthält:
bx_Header.html
index.html
Dermed kan PHP-koden til hovedsiden ikke bare erstatte egne plassholdere, men også endre eksisterende plassholdere innenfor headeren.
Et eksempel: Hvis headeren din inneholder plassholderen __HeaderClass__, kan du erstatte den fra hovedsiden:
$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);
Slik kan en bestemt hovedside for eksempel markere sitt menypunkt som aktivt innenfor den allerede lastede headeren.
Footeren er på dette tidspunktet fortsatt ikke lastet. Dens HTML-innhold kan derfor ennå ikke endres pålitelig via $LayoutHTML.
3. PHP-koden i footeren kjøres til slutt
Som det siste laster CMS bx_Footer.html og kjører dens PHP-kode. Nå inneholder $LayoutHTML HTML-innholdet fra alle tre områdene.
PHP-Code: bx_Footer.html
$LayoutHTML enthält:
bx_Header.html
index.html
bx_Footer.html
Footerens PHP-kode kan derfor erstatte plassholdere innenfor headeren, hovedsiden eller footeren, så lenge de fortsatt er tilgjengelige på det tidspunktet.
Inneholder det allerede lastede HTML for eksempel plassholderen __MyTitle__, kan du erstatte den der:
$LayoutHTML = str_replace("__MyTitle__","My Custom Title",$LayoutHTML);
Footeren egner seg derfor også for felles tilpasninger som først skal gjøres etter at hele sidestrukturen er lastet.
Kjøringsrekkefølgen på et blikk
Den avgjørende regelen er: PHP kan bare endre HTML-områder gjennom $LayoutHTML som allerede er lastet på dette tidspunktet.
1. bx_Header.html
PHP sieht: Header
↓
2. index.html
PHP sieht: Header + Hauptseite
↓
3. bx_Footer.html
PHP sieht: Header + Hauptseite + Footer
Hvis du for eksempel vil styre en headerplassholder fra en bestemt side, bruker du PHP-koden til denne hovedsiden. Skal en plassholder erstattes i alle tre allerede lastede områdene, er det hensiktsmessig å bruke den sist utførte PHP-koden fra footeren.
Viktig med egne PHP-funksjoner
Hvis du definerer egne PHP-funksjoner i de ulike områdene, vær oppmerksom på at den samme funksjonen ikke blir definert flere ganger under en sidevisning. Velg unike funksjonsnavn eller sjekk før definisjonen om funksjonen allerede eksisterer.
if(!function_exists("MyTemplateFunction")) {
function MyTemplateFunction() {
return true;
}
}
Sammendrag
I vår grunnlayout blir først PHP-koden fra bx_Header.html kjørt, deretter PHP-koden fra index.html og til slutt PHP-koden fra bx_Footer.html. Med hvert trinn utvides HTML-innholdet du kan aksessere gjennom $LayoutHTML.
Plasser PHP-koden der HTML-seksjonene som trengs allerede er lastet: i headeren for header-spesifikke tilpasninger, i hovedsiden for egne innhold og den tidligere lastede headeren, eller i footeren for endringer i det allerede sammensatte layoutet.
FAQ
hva kunder ofte spør oss om
I hvilken rekkefølge kjøres PHP-skriptene?
Først kjøres PHP-koden fra bx_Header.html, deretter PHP-koden fra hovedsiden, for eksempel index.html, og til slutt PHP-koden fra bx_Footer.html.
Hvilke HTML-seksjoner inneholder $LayoutHTML under header-PHP-koden?
Under utførelsen av header-PHP-koden inneholder $LayoutHTML kun det allerede lastede HTML-innholdet fra bx_Header.html.
Kan hovedsiden endre HTML-koden til headeren?
Ja. Når PHP-koden for hovedsiden kjøres, er header og hovedside allerede inkludert i $LayoutHTML. Dermed kan du for eksempel erstatte en plassholder som tidligere er opprettet i headeren.
Hvorfor kan header-PHP-koden ikke endre footeren ennå?
Footeren lastes først etter hovedsiden. Dens HTML-innhold er derfor ikke tilgjengelig i $LayoutHTML under header-PHP-koden.
Hvilke områder kan footer-PHP-koden endre?
På tidspunktet for footerens utførelse inneholder $LayoutHTML allerede headeren, hovedsiden og footeren. Plassholdere som fortsatt finnes i disse områdene kan bli erstattet.
Hvor kan jeg se oppsettet av grunnlayouten?
Layout-definisjonen vises i eksempelet i tabellen 00_layout. Den inkluderer bx_Header.html, den aktuelle hovedsiden og bx_Footer.html.
Hvor kan jeg redigere PHP-koden fra bx_Header.html?
Velg bx_Header.html i Filbehandler og åpne PHP-kode.
Hva må jeg være oppmerksom på med egne PHP-funksjoner i header og hovedside?
Egne funksjoner kan ikke defineres flere ganger med samme navn under en sideforespørsel. Bruk unike navn eller sjekk med function_exists() før definisjonen om funksjonen allerede finnes.