Zo werkt het site-renderingsproces in het bluetronix CMS
Bij elke pagina-aanroep doorloopt het bluetronix CMS verschillende verwerkingsstappen. In deze tutorial leer je het volledige renderingsproces kennen en wanneer veiligheidscontroles plaatsvinden, PHP-scripts worden uitgevoerd, lay-outvariabelen worden vervangen en de voltooide HTML-pagina's worden gegenereerd.
1. Laad veiligheids-scripts
Aan het begin laadt het bluetronix CMS de veiligheidsrelevante scripts. Dit omvat Secure Check, de controle van het aantal oproepen, de voorbereiding of controle van MySQL-parameters en de analyse van GET- en POST-parameters.
Controles waarbij geen databaseverbinding nodig is, worden al op dit punt uitgevoerd.
2. Laad moduleconfiguratie
Indien aanwezig, wordt het bestand /bx_Mod/config_own.php geladen. Gedefinieerde scripts en configuratievariabelen zijn op deze manier al aan het begin van het renderingproces beschikbaar.
3. Sessie starten
Het CMS start de PHP-sessie met @session_start();. Hierbij zijn met name drie sessievariabelen belangrijk: $_SESSION["S_User"] voor de CMS-gebruiker of bewerkingsmodus, $_SESSION["S_Language"] voor de huidige taal en $_SESSION["Web_User"] voor de gebruiker van een frontend-login.
4. Pagina-parameters laden
Vervolgens leest het CMS informatie over de huidige oproep uit de servervariabelen. $domain krijgt de domeinnaam uit $_SERVER["SERVER_NAME"], $FileParameter het aanvraagpad inclusief GET-parameters uit $_SERVER["REQUEST_URI"] en $file het uitvoerende bestandspad uit $_SERVER["PHP_SELF"].
$ReferURL bevat de waarde van $_SERVER["HTTP_REFERER"], voor zover deze is verzonden. Deze kan bijvoorbeeld worden gebruikt bij het herladen van frames of pagina-onderdelen.
5. Databaseverbinding maken
Het CMS maakt automatisch de databaseverbinding. Daarna staan de CMS-database-tabellen ter beschikking voor verdere controles en om de pagina-inhoud te laden.
6. GET- en POST-parameters opnieuw controleren
Na het opbouwen van de databaseverbinding roept het CMS SECUREGetPost(); aan. De doorgegeven GET- en POST-parameters worden opnieuw gecontroleerd en indien nodig aangepast. Nu zijn ook controles mogelijk die database-informatie vereisen.
7. Domein-, Bewerking- en Taalomleidingen
Afhankelijk van de CMS-configuratie, de opgeroepen domeinnaam, de bewerkingsmodus, de gekozen taal en de oproepparameters kan een omleiding plaatsvinden. Mogelijke bestemmingen zijn de hoofddomein, de edit-domein en talen-specifieke domeinen of URL's.
8. HTTPS-omleiding
Als de website zonder HTTPS is opgeroepen, vindt er een omleiding plaats naar de SSL- of HTTPS-versie van de pagina.
9. Centrale PHP-scripts laden
Nu laadt het CMS zijn centrale PHP-functies. Dit omvat bijvoorbeeld BlueSMTPMail() voor het verzenden van e-mails en BlueFormSend() voor de verwerking van formulieren. Andere centrale functies worden eveneens ingeladen.
10. Pagina-gegevens uit 00_site laden
De gegevens van de opgevraagde pagina worden uit de database-tabel 00_site gelezen. Hierbij worden CMS-variabelen zoals $Template vastgesteld.
Daarnaast worden $LayoutHTML en $SitePHP geïnitialiseerd. $LayoutHTML bevat later de volledige HTML-layout, terwijl $SitePHP de PHP-code bevat die direct bij de opgeroepen pagina hoort.
11. Lay-out uit 00_layout laden
De aan de pagina toegewezen layout wordt uit de database-tabel 00_layout geladen en vormt de basis voor de verdere verwerking in $LayoutHTML.
12. Taalafhankelijke JavaScript-bestanden instellen
Als taal-specifieke bestanden aanwezig zijn, kan het CMS de standaardbestanden BxScript.js en BxHeadScript.js vervangen door passende taalvarianten, bijvoorbeeld door BxScript_nl.js of BxScript_en.js.
Bij dit proces worden de scriptmerken __FV_/bx_script/BxScript_own_min.js__ en __FV_/bx_script/BxHeadScript_own_min.js__ in de lay-out aangepast.
13. Header en dynamische inhoud genereren
Nu worden dynamische inhoud en pagina-specifieke PHP-scripts uitgevoerd. DynMenue() genereert dynamische menu's, IncludeModul() voegt geconfigureerde modules in en EditMARK() stelt de bewerkingsmarkeringen van het CMS in.
Met eval($SitePHP) wordt de PHP-code van de huidige pagina uitgevoerd; eval($IncludePHP) voert ingeladen PHP-scripts uit.
14. Wijzigingsparameters voor CSS en JavaScript instellen
Voor CSS- en JavaScript-bestanden wordt een wijzigingsparameter ingesteld. Zo kan de browser bij bijgewerkte bestanden een nieuwe versie laden, in plaats van een verouderd bestand uit zijn cache te gebruiken.
Bijvoorbeeld, uit een bestandsreferentie zoals /css/style.css kan een oproep met een versieparameter zoals /css/style.css?v2026... ontstaan.
15. Donker- of lichtmodus instellen
Het CMS leest de geconfigureerde weergavemodus uit /bx_style/BxSource/CSSEditDarkLight.bx. Afhankelijk van de inhoud van het bestand wordt de donkere of lichte modus in de layout ingesteld.
16. Module-configuratievariabelen in de lay-out instellen
De module-configuratie uit /bx_Mod/config_own.php wordt op de layout toegepast. Als bijvoorbeeld de winkel, zoekfunctie, login of vertaalmodule is uitgeschakeld, kunnen de bijbehorende bedieningselementen automatisch worden verborgen.
Hiervoor worden lay-outmerken zoals __DB_GB_DesktopIconBasket_Display__, __DB_GB_DesktopIconSearch_Display__, __DB_GB_DesktopIconLogin_Display__ of __DB_GB_DesktopIconLang_Display__ vervangen door none.
17. Overige vervangingsmerken verwijderen
Niet vervangen CMS-placeholders worden uit de uiteindelijke HTML verwijderd. Dit betreft onder andere merken volgens de patronen __DB_...__ en __ST_...__ evenals de daarvoor bestemde interne xxx-commentaarmerken.
18. HTML-opmerkingen verwijderen
Het CMS verwijdert vervolgens HTML-commentaar uit $LayoutHTML. Hierdoor wordt onnodige commentaartekst niet aan de browser geleverd.
19. Taalvertaling uitvoeren
Als $_SESSION["S_Language"] niet gelijk is aan $GBMainLang, worden de gemarkeerde teksten in de momenteel gebruikte taal vertaald. De vertalingen komen uit de database-tabel Translation.
Als een benodigde tekst daar nog niet aanwezig is, wordt er een nieuwe vermelding in Translation aangemaakt. Het CMS herkent vertaalbare inhoud aan de labels My Text en My Text.
20. Aansluiting van afbeeldingen via IMG.pl vervangen
Afbeeldingsoproepen en afbeelding bijsnijdingen via IMG.pl worden vervangen door eerder geproduceerde of geoptimaliseerde afbeeldingsbestanden. De voltooide HTML-pagina kan hierdoor direct toegang krijgen tot deze afbeeldingsvarianten.
21. Voltooide pagina weergeven
Na de verwerking wordt $LayoutHTML met de contenttype text/html; charset=utf-8 aan de browser weergegeven, bijvoorbeeld via print $LayoutHTML;.
Voor niet-geactiveerde of interne domeinen wordt de uitvoer gemarkeerd met noindex, nofollow, zodat deze pagina's niet door zoekmachines worden geïndexeerd.
22. Cache schrijven
Na de pagina-uitvoer kan het CMS de voltooide pagina in de cache opslaan. Voorwaarde is dat er geen S_User is ingelogd, de pagina zich niet in de bewerkingsmodus bevindt en caching voor deze pagina is ingeschakeld.
Bij latere aanroepen kan de opgeslagen HTML-pagina worden gebruikt, zonder het volledige renderproces opnieuw uit te voeren.
FAQ
wat klanten ons vaak vragen
Wat is het site-renderingproces?
Met dit wordt in de handleiding de verwerkingsstappen bedoeld waarmee het bluetronix CMS uit pagina- en lay-outgegevens de voltooide HTML-pagina genereert en aan de browser levert.
Welke veiligheidscontroles vinden plaats voor de databaseverbinding?
Voor de databaseverbinding worden onder andere Secure Check, de controle van het aantal oproepen, de voorbereiding van MySQL-parameters en de analyse van GET- en POST-parameters uitgevoerd.
Wanneer wordt de module-configuratie geladen?
Het bestand /bx_Mod/config_own.php wordt, indien aanwezig, al voor de start van de sessie en voor het opbouwen van de databaseverbinding geladen.
Waarvoor worden S_User, S_Language en Web_User gebruikt?
S_User verwijst naar de CMS-gebruiker of bewerkingsmodus, S_Language de huidige taal van de website en Web_User de gebruiker van een frontend-inlog.
Uit welke database-tabellen komen pagina en lay-out?
De pagina-informatie wordt geladen uit 00_site. De bijbehorende lay-out wordt gelezen uit 00_layout en verwerkt in $LayoutHTML.
Wanneer wordt de PHP-code van een pagina uitgevoerd?
Bij het genereren van de header en dynamische inhoud wordt de pagina-eigen code uitgevoerd via eval($SitePHP) en ingesloten PHP-code via eval($IncludePHP).
Wanneer worden taalafhankelijke JavaScript-bestanden gebruikt?
Als passende taalspecifieke versies beschikbaar zijn, kunnen BxScript.js en BxHeadScript.js door de overeenkomstige taalspecifieke bestanden worden vervangen.
Hoe wordt de Dark- of Light-modus bepaald?
Het CMS leest het bestand /bx_style/BxSource/CSSEditDarkLight.bx en stelt op basis van de inhoud de weergavemodus in de lay-out in.
Wanneer worden teksten automatisch vertaald?
Als de huidige taal afwijkt van $GBMainLang, worden de overeenkomstig gemarkeerde teksten vertaald op basis van de vermeldingen in de tabel Translation.
Onder welke voorwaarden wordt de voltooide pagina gecached?
De cache kan worden geschreven als er geen S_User is ingelogd, de pagina zich niet in de bewerkingsmodus bevindt en caching voor deze pagina is ingeschakeld.