Sådan fungerer site-rendering-processen i bluetronix CMS
Ved hvert sidebesøg gennemgår bluetronix CMS flere behandlingstrin. I denne tutorial lærer du den fulde rendering-proces at kende og finder ud af, hvornår sikkerhedstjek udføres, PHP-scripts køres, layoutvariabler erstattes, og de færdige HTML-sider genereres.
1. Indlæs sikkerhedsscripts
I starten indlæser bluetronix CMS de sikkerhedsrelevante skripter. Dette omfatter Secure Check, kontrollen af opkaldstallet, forberedelsen eller kontrollen af MySQL-parametre samt analysen af GET- og POST-parametre.
Kontroller, der ikke kræver en databaseforbindelse, udføres allerede på dette tidspunkt.
2. Indlæs modulkonfiguration
Hvis den findes, indlæses filen /bx_Mod/config_own.php. Skripter og konfigurationsvariabler, der er defineret heri, er dermed tilgængelige allerede i begyndelsen af rendering-processen.
3. Starte session
CMS'et starter PHP-sessionen med @session_start();. Her er især tre sessionvariabler vigtige: $_SESSION["S_User"] for CMS-brugeren eller redigeringstilstand, $_SESSION["S_Language"] for det aktuelle sprog og $_SESSION["Web_User"] for brugeren af en frontend-login.
4. Indlæs sideparametre
Herefter henter CMS'et informationer om det aktuelle opkald fra servervariablerne. $domain får domænenavnet fra $_SERVER["SERVER_NAME"], $FileParameter får request-stien inklusive GET-parametre fra $_SERVER["REQUEST_URI"] og $file får den udførte filsti fra $_SERVER["PHP_SELF"].
$ReferURL indeholder værdien af $_SERVER["HTTP_REFERER"], hvis den er blevet sendt. Den kan for eksempel bruges ved indlæsning af frames eller sektioner på siden.
5. Etabler databaseforbindelse
CMS'et opretter automatisk forbindelsen til databasen. Derefter er CMS-database-tabellerne tilgængelige for yderligere kontroller og til indlæsning af indholdet på siderne.
6. Tjek GET- og POST-parametre igen
Efter oprettelsen af databaseforbindelsen kalder CMS'et SECUREGetPost();. De overførte GET- og POST-parametre bliver kontrolleret igen og eventuelt justeret. Nu er kontroller, der kræver databaseoplysninger, også mulige.
7. Domæne-, redigér- og sprogomdirigeringer
Afhængig af CMS-konfigurationen, det pågældende domæne, redigeringsmodus, det valgte sprog og opkaldsparametrene kan der ske en omdirigering. Eventuelle mål er hoveddomænet, redigeringsdomænet samt sprogafhængige domæner eller URLs.
8. HTTPS-omdirigering
Hvis hjemmesiden er blevet kaldt uden HTTPS, sker der en omdirigering til SSL- eller HTTPS-versionen af siden.
9. Indlæs centrale PHP-skripter
Nu indlæser CMS'et sine centrale PHP-funktioner. Dette inkluderer for eksempel BlueSMTPMail() til sending af e-mails og BlueFormSend() til behandling af formularer. Yderligere centrale funktioner bliver også indlæst.
10. Indlæs sitedata fra 00_site
Dataene for den anmodede side bliver læst fra databasen 00_site. Herunder vil CMS-variabler som $Template blive identificeret.
Derudover bliver $LayoutHTML og $SitePHP initialiseret. $LayoutHTML vil senere indeholde den fulde HTML-layout, mens $SitePHP indeholder den PHP-kode, der direkte tilhører den anmodede side.
11. Indlæs layout fra 00_layout
Det layout, der er knyttet til siden, bliver indlæst fra databasen 00_layout og danner grundlaget for den videre behandling i $LayoutHTML.
12. Indstil sprogafhængige JavaScript-filer
Hvis der findes sprog-specifikke filer, kan CMS'et erstatte standardfilerne BxScript.js og BxHeadScript.js med passende sprogvarianter, for eksempel BxScript_da.js eller BxScript_en.js.
Her justeres filmarkeringerne __FV_/bx_script/BxScript_own_min.js__ og __FV_/bx_script/BxHeadScript_own_min.js__ i layoutet.
13. Generer header og dynamisk indhold
Nu genereres dynamisk indhold og sidetypiske PHP-scripts udføres. DynMenue() genererer dynamiske menuer, IncludeModul() integrerer konfigurerede moduler, og EditMARK() sætter CMS'ets redigeringsmærker.
Med eval($SitePHP) udføres PHP-koden fra den aktuelle side; eval($IncludePHP) udfører indlæste PHP-scripts.
14. Indstil ændringsparametre for CSS og JavaScript
For CSS- og JavaScript-filer sættes en ændringsparameter. På den måde kan browseren hente en ny version af opdaterede filer i stedet for at bruge en forældet fil fra sin cache.
For eksempel kan en filreference som /css/style.css blive en opkald med en versionsparameter som /css/style.css?v2026....
15. Indstil dark- eller light-mode
CMS'et læser den konfigurerede visningsmodus fra /bx_style/BxSource/CSSEditDarkLight.bx. Afhængig af filens indhold sættes dark- eller light-mode i layoutet.
16. Indstil modulkonfigurationsvariabler i layoutet
Modulkonfigurationen fra /bx_Mod/config_own.php anvendes på layoutet. Hvis for eksempel shop, søgning, login eller oversættelsesmodul er deaktiveret, kan de tilhørende betjeningselementer automatisk skjules.
For dette bliver layoutmarkeringer som __DB_GB_DesktopIconBasket_Display__, __DB_GB_DesktopIconSearch_Display__, __DB_GB_DesktopIconLogin_Display__ eller __DB_GB_DesktopIconLang_Display__ erstattet med none.
17. Fjern resterende erstatningsmærker
Ikke erstattede CMS-pladsholdere fjernes fra den færdige HTML. Dette omfatter blandt andet mærker efter mønstrene __DB_...__ og __ST_...__ samt de hertil hørende interne xxx-kommentarmærker.
18. Fjern HTML-kommentarer
CMS'et fjerner derefter HTML-kommentarer fra $LayoutHTML. Derved leveres unødvendig kommentar-tekst ikke til browseren.
19. Udfør sprogoversættelse
Hvis $_SESSION["S_Language"] ikke er lig med $GBMainLang, oversættes de markerede tekster til det aktuelt anvendte sprog. Oversættelserne kommer fra databasen Translation.
Hvis en nødvendig tekst endnu ikke findes der, oprettes en ny post i Translation. CMS'et genkender oversættelige indhold baseret på mærkerne My Text og My Text.
20. Erstat billedehenvisninger via IMG.pl
Billedopkald og beskæringer via IMG.pl bliver erstattet af tidligere genererede eller optimerede billedfiler. Den færdige HTML-side kan derfor direkte få adgang til disse billedvarianter.
21. Udskriv færdig side
Efter afslutningen af behandlingen bliver $LayoutHTML sendt til browseren med indholdstypen text/html; charset=utf-8, for eksempel via print $LayoutHTML;.
For ikke aktiverede eller interne domæner markeres output med noindex, nofollow, så disse sider ikke bliver indekseret af søgemaskiner.
22. Skriv cache
Efter sideudgangen kan CMS'et gemme den færdiglavede side i cachen. Forudsætningen er, at ingen S_User er logget ind, at siden ikke befinder sig i redigeringsmode, og at caching er aktiveret for denne side.
Ved senere opkald kan den gemte HTML-side bruges, uden at den fulde rendering-proces skal udføres igen.
FAQ
hvad kunder ofte spørger os
Hvad er site-renderingsprocessen?
Tutorialen henviser til de behandlingstrin, hvorigennem bluetronix CMS genererer den færdige HTML-side fra side- og layoutdata og sender den til browseren.
Hvilke sikkerhedstjek foretages før databasen forbindelse?
Før databaseforbindelsen udføres blandt andet Secure Check, kontrol af opkaldsantal, forberedelse af MySQL-parametre og analyse af GET- og POST-parametre.
Hvornår indlæses modulkonfigurationen?
Fil /bx_Mod/config_own.php indlæses, hvis den findes, allerede før sessionen startes og før databaseforbindelsen oprettes.
Hvad bruges S_User, S_Language og Web_User til?
S_User angiver CMS-brugeren eller redigeringsmode, S_Language den aktuelle sprog for websiden, og Web_User brugeren af et frontend-login.
Fra hvilke databastabeller stammer side og layout?
Sidens data hentes fra 00_site. Det tilhørende layout læses fra 00_layout og behandles i $LayoutHTML.
Hvornår udføres PHP-koden på en side?
Ved oprettelse af header og dynamisk indhold udføres sidens egen kode via eval($SitePHP) og inkluderet PHP-kode via eval($IncludePHP).
Hvornår bruges sprogspecifikke JavaScript-filer?
Når passende sprogvarianter er tilgængelige, kan BxScript.js og BxHeadScript.js erstattes af de relevante sprogspecifikke filer.
Hvordan bestemmes mørke- eller lysestil?
CMS'et læser filen /bx_style/BxSource/CSSEditDarkLight.bx og indstiller visningstilstanden i layoutet baseret på dens indhold.
Hvornår oversættes tekster automatisk?
Hvis det aktuelle sprog afviger fra $GBMainLang, oversættes de tilsvarende markerede tekster baseret på posterne i tabellen Translation.
Under hvilke betingelser caches den færdige side?
Cachen kan skrives, hvis ingen S_User er logget ind, siden ikke er i redigeringsmode, og caching er blevet aktiveret for denne side.