Download nu de app en test 10 dagen gratis
Valuta Taal kiezen Selecteer regio

PHP-uitvoeringsvolgorde: Header, hoofdpagina en footer

Deze ontwikkelaarstutorial laat je zien aan de hand van een basislay-out met bx_Header.html, index.html en bx_Footer.html, wanneer de afzonderlijke PHP-scripts worden uitgevoerd. Je leert hoe de inhoud van $LayoutHTML stap voor stap wordt uitgebreid en waar je pagina-afhankelijke of globale wijzigingen kunt aanbrengen.

Vereisten en doel

Voor deze ontwikkelaarstutorial moet je weten hoe het bluetronix CMS een pagina samenstelt uit zijn layout, de header, de hoofdpagina en de footer. We tonen je, in welke volgorde de PHP-scripts van deze onderdelen worden uitgevoerd en welke delen van $LayoutHTML al geladen zijn.

In het voorbeeld bestaat de basislayout uit de CMS-bestanden bx_Header.html, index.html en bx_Footer.html. De hoofdpagina index.html staat als vertegenwoordiger voor de aangeroepen HTML-pagina.

De basislayout bepaalt in welke volgorde de drie onderdelen worden ingeladen. In het getoonde voorbeeld vind je de layout-definitie in de tabel 00_layout.

Het relevante stuk van de layout ziet er als volgt uit:

__DB_Layout_/bx_Header.html__
<main>
   __DB_Layout_Main__
</main>
__DB_Layout_/bx_Footer.html__

De eerste placeholder bindt bx_Header.html in. Binnen het main-element wordt via __DB_Layout_Main__ de momenteel opgevraagde pagina ingebonden, in ons voorbeeld index.html. Daarna volgt bx_Footer.html.

Hoewel de layout-definitie alle drie de onderdelen bevat, wordt de respectieve HTML-inhoud voor de PHP-code van de afzonderlijke onderdelen pas geleidelijk in $LayoutHTML geladen.

1. PHP-code van de header wordt eerst uitgevoerd

Open in de bestandsbeheerder het bestand bx_Header.html. Via PHP-code kun je de PHP-code van dit onderdeel bewerken.

De header is het eerste ingeladen paginaonderdeel. Terwijl de PHP-code wordt uitgevoerd, bevat $LayoutHTML daarom alleen de HTML van bx_Header.html.

PHP-Code: bx_Header.html

$LayoutHTML enthält:
   bx_Header.html

Je kunt hier bijvoorbeeld placeholders van de header vervangen of de navigatie voorbereiden. Je hebt op dit moment nog geen toegang tot de eigenlijke HTML-inhoud van index.html of bx_Footer.html via $LayoutHTML.

2. PHP-code van de hoofdpagina wordt daarna uitgevoerd

Na de header laadt het CMS de aangeroepen hoofdpagina, hier index.html, en voert de PHP-code daarvan uit. Op dat moment bevat $LayoutHTML zowel de HTML-code van de header als de HTML-code van de hoofdpagina.

PHP-Code: index.html

$LayoutHTML enthält:
   bx_Header.html
   index.html

Hierdoor kan de PHP-code van de hoofdpagina niet alleen eigen placeholders vervangen, maar ook al bestaande placeholders binnen de header wijzigen.

Een voorbeeld: als je header de placeholder __HeaderClass__ bevat, kun je deze vanuit de hoofdpagina vervangen:

$LayoutHTML = str_replace("__HeaderClass__","active",$LayoutHTML);

Zo kan een bepaalde hoofdpagina bijvoorbeeld zijn menu-item binnen de al geladen header als actief markeren.

De footer is op dat moment nog niet geladen. Daarom kan de HTML-inhoud nog niet betrouwbaar via $LayoutHTML worden veranderd.

3. PHP-code van de footer wordt als laatste uitgevoerd

Als laatste laadt het CMS bx_Footer.html en voert de PHP-code daarvan uit. Nu bevat $LayoutHTML de HTML-inhoud van alle drie de onderdelen.

PHP-Code: bx_Footer.html

$LayoutHTML enthält:
   bx_Header.html
   index.html
   bx_Footer.html

De PHP-code van de footer kan daarom placeholders binnen de header, de hoofdpagina of de footer vervangen, voor zover deze op dat moment nog aanwezig zijn.

Als de al geladen HTML bijvoorbeeld de placeholder __MyTitle__ bevat, kun je deze daar vervangen:

$LayoutHTML = str_replace("__MyTitle__","My Custom Title",$LayoutHTML);

De footer is daarom ook geschikt voor gezamenlijke aanpassingen die pas na het laden van de gehele pagina-structuur moeten worden uitgevoerd.

De uitvoeringsvolgorde in één oogopslag

De belangrijkste regel is: PHP kan alleen de HTML-onderdelen wijzigen die op dat moment al geladen zijn via $LayoutHTML.

1. bx_Header.html
   PHP sieht: Header
        ↓
2. index.html
   PHP sieht: Header + Hauptseite
        ↓
3. bx_Footer.html
   PHP sieht: Header + Hauptseite + Footer

Als je bijvoorbeeld een header-placeholder vanuit een bepaalde pagina wilt aansteken, gebruik je de PHP-code van deze hoofdpagina. Als een placeholder in alle drie de al geladen onderdelen moet worden vervangen, is de laatst uitgevoerde PHP-code van de footer geschikt.

Belangrijk bij eigen PHP-functies

Als je in de verschillende onderdelen eigen PHP-functies definieert, let er dan op dat dezelfde functie tijdens een paginaverzoek niet meerdere keren wordt gedefinieerd. Kies daarvoor unieke functienamen of controleer voor de definitie of de functie al bestaat.

if(!function_exists("MyTemplateFunction")) {
   function MyTemplateFunction() {
      return true;
   }
}

Samenvatting

In onze basislayout wordt eerst de PHP-code van bx_Header.html uitgevoerd, daarna de PHP-code van index.html en als laatste de PHP-code van bx_Footer.html. Met elke stap wordt de HTML-inhoud uitgebreid die je via $LayoutHTML kunt benaderen.

Plaats je PHP-code daarom daar waar de benodigde HTML-gebieden al zijn geladen: in de header voor header-specifieke aanpassingen, op de hoofdpagina voor eigen inhoud en de eerder geladen header, of in de footer voor wijzigingen aan de reeds samengestelde lay-out.

FAQ

wat klanten ons vaak vragen

In welke volgorde worden de PHP-scripts uitgevoerd?

Eerst wordt de PHP-code van bx_Header.html uitgevoerd, daarna de PHP-code van de hoofdpagina, bijvoorbeeld index.html, en als laatste de PHP-code van bx_Footer.html.

Welke HTML-gebieden bevat $LayoutHTML tijdens de Header-PHP-code?

Tijdens de uitvoering van de Header-PHP-code bevat $LayoutHTML alleen de al geladen HTML-inhoud van bx_Header.html.

Kan de hoofdpagina de HTML-code van de header veranderen?

Ja. Wanneer de PHP-code van de hoofdpagina wordt uitgevoerd, zijn de header en de hoofdpagina al in $LayoutHTML opgenomen. Hiermee kun je bijvoorbeeld een eerder in de header aangemaakte placeholder vervangen.

Waarom kan de Header-PHP-code de footer nog niet veranderen?

De footer wordt pas na de hoofdpagina geladen. Zijn HTML-inhoud is tijdens de Header-PHP-code daarom nog niet in $LayoutHTML aanwezig.

Welke gebieden kan de Footer-PHP-code veranderen?

Op het moment van de footer-uitvoering bevat $LayoutHTML al de header, de hoofdpagina en de footer. Nog bestaande placeholders in deze gebieden kunnen daar worden vervangen.

Waar zie ik de opbouw van de basislay-out?

De lay-outdefinitie wordt in het voorbeeld weergegeven in de tabel 00_layout. Deze koppelt bx_Header.html, de huidige hoofdpagina en bx_Footer.html.

Waar kan ik de PHP-code van bx_Header.html bewerken?

Selecteer bx_Header.html in de Bestandbeheerder en open PHP-code.

Waar moet ik rekening mee houden bij eigen PHP-functies in de header en hoofdpagina?

Eigen functies mogen tijdens een paginabezoek niet meerdere keren met dezelfde naam worden gedefinieerd. Gebruik unieke namen of controleer van tevoren met function_exists() of de functie al bestaat.

CMS