Slik fungerer Site Rendering-prosessen i bluetronix CMS
Ved hvert sidebesøk går bluetronix CMS gjennom flere behandlingstrinn. I denne opplæringen får du lære den komplette rendering-prosessen og når sikkerhetssjekker skjer, PHP-skripter kjøres, layoutvariabler byttes ut og de ferdige HTML-sidene genereres.
1. Laste inn sikkerhetsskripter
I starten laster bluetronix CMS de sikkerhetsrelevante skriptene. Dette inkluderer Secure Check, kontroll av antall forespørsel, forberedelse eller sjekk av MySQL-parametere samt analyse av GET- og POST-parametere.
Sjekker som ikke krever databaseforbindelse, utføres allerede på dette punktet.
2. Laste inn modulkonfigurasjon
Hvis tilgjengelig, lastes filen /bx_Mod/config_own.php. Definerte skripter og konfigurasjonsvariabler i den er dermed tilgjengelige fra starten av gjengivelsesprosessen.
3. Start sesjonen
CMS starter PHP-økten med @session_start();. Spesielt tre sesjonsvariabler er viktige: $_SESSION["S_User"] for CMS-brukeren eller redigeringsmodus, $_SESSION["S_Language"] for det nåværende språket, og $_SESSION["Web_User"] for brukeren av et frontend-login.
4. Laste sidens parametere
Deretter leser CMS informasjon om den nåværende forespørselen fra servervariablene. $domain får domenenavnet fra $_SERVER["SERVER_NAME"], $FileParameter forespørselstien inkludert GET-parametere fra $_SERVER["REQUEST_URI"], og $file den utførte filstien fra $_SERVER["PHP_SELF"].
$ReferURL inneholder verdien av $_SERVER["HTTP_REFERER"], hvis den ble sendt. Den kan for eksempel brukes ved lastingen av rammer eller sidestykker.
5. Etablere databasen forbindelse
CMS-et oppretter automatisk databasetilkoblingen. Deretter er CMS-datatabellene tilgjengelige for ytterligere sjekker og for lasting av sidens innhold.
6. Sjekke GET- og POST-parametere på nytt
Etter at databasetilkoblingen er opprettet, kaller CMS-et SECUREGetPost();. De sendt GET- og POST-parametrene blir sjekket på nytt og eventuelt justert. Nå kan det også utføres sjekker som trenger databaseinformasjon.
7. Domene-, redigerings- og språkvidereformidlinger
Avhengig av CMS-konfigurasjonen, den påkalte domenen, redigeringsmodus, valgt språk og påkallingsparametere, kan en omdirigering skje. Mulige mål er hoveddomenen, redigeringsdomenet samt språkspesifikke domener eller URL-er.
8. HTTPS-viderekobling
Hvis nettstedet ble kalt uten HTTPS, skjer det en omdirigering til SSL- eller HTTPS-versjonen av siden.
9. Laste sentrale PHP-skript
Nå laster CMS-et sine sentrale PHP-funksjoner. Dette inkluderer for eksempel BlueSMTPMail() for sending av e-post og BlueFormSend() for behandling av skjemaer. Andre sentrale funksjoner blir også inkludert.
10. Laste sidens data fra 00_site
Dataene for den forespurte siden leses fra databasetabellen 00_site. Her blir CMS-variabler som $Template bestemt.
I tillegg blir $LayoutHTML og $SitePHP initialisert. $LayoutHTML inneholder senere den komplette HTML-layouten, mens $SitePHP inneholder PHP-koden som direkte tilhører den påkalte siden.
11. Laste layout fra 00_layout
Det tilknyttede layoutet for siden lastes fra databasetabellen 00_layout og utgjør grunnlaget for videre behandling i $LayoutHTML.
12. Sette språkavhengige JavaScript-filer
Hvis språkspesifikke filer er tilgjengelige, kan CMS-et erstatte standardfilene BxScript.js og BxHeadScript.js med passende språkvarianter, som for eksempel BxScript_no.js eller BxScript_en.js.
Her blir filmarkene __FV_/bx_script/BxScript_own_min.js__ og __FV_/bx_script/BxHeadScript_own_min.js__ justert i layout.
13. Generere header og dynamisk innhold
Nå blir dynamisk innhold generert og sidespesifikke PHP-skript kjørt. DynMenue() genererer dynamiske menyer, IncludeModul() binder konfigurerte moduler, og EditMARK() setter CMS-ets redigeringsmarkeringer.
Med eval($SitePHP) kjøres PHP-koden for den nåværende siden; eval($IncludePHP) kjører inkluderte PHP-skript.
14. Sette endringsparametre for CSS og JavaScript
For CSS- og JavaScript-filer settes en endringsparameter. På den måten kan nettleseren laste en ny versjon av oppdaterte filer, i stedet for å bruke en utdatert fil fra cachen sin.
For eksempel kan en filreferanse som /css/style.css bli til et kall med en versjonsparameter som /css/style.css?v2026....
15. Sette mørk- eller lysmodus
CMS-et leser den konfigurerte visningsmodus fra /bx_style/BxSource/CSSEditDarkLight.bx. Avhengig av filinnholdet, vil Dark- eller Light-modus bli satt i layoutet.
16. Sette modulkonfigurasjonsvariabler i layout
Modulkonfigurasjonen fra /bx_Mod/config_own.php anvendes på layoutet. Hvis for eksempel butikk, søk, innlogging eller oversettelsesmodul er deaktivert, kan de tilhørende kontrolelementene automatisk skjules.
Layoutmarkene som __DB_GB_DesktopIconBasket_Display__, __DB_GB_DesktopIconSearch_Display__, __DB_GB_DesktopIconLogin_Display__ eller __DB_GB_DesktopIconLang_Display__ blir erstattet med none.
17. Fjerne gjenværende plassholdere
Uerstattede CMS-plassholdere blir fjernet fra det ferdige HTML. Dette gjelder blant annet merker etter mønstrene __DB_...__ og __ST_...__ samt de interne xxx-kommentarmerkene som er tilsiktet.
18. Fjerne HTML-kommentarer
CMS-et fjerner deretter HTML-kommentarer fra $LayoutHTML. Dermed blir unødvendig kommentarinnhold ikke levert til nettleseren.
19. Gjøre språkoversettelse
Hvis $_SESSION["S_Language"] ikke er lik $GBMainLang, blir de markerte tekstene oversatt til det nåværende språket. Oversettelsene kommer fra databasetabellen Translation.
Hvis en nødvendig tekst ennå ikke er til stede der, blir det opprettet en ny oppføring i Translation. CMS-et gjenkjenner oversettbare innhold basert på markørene My Text og My Text.
20. Erstatte bildehenvisninger med IMG.pl
Bildehenvisninger og bildebeskjæringer via IMG.pl blir erstattet med tidligere genererte eller optimaliserte bildefiler. Den ferdige HTML-siden kan dermed direkte få tilgang til disse bildevariantene.
21. Generere ferdig side
Etter at behandlingen er fullført, blir $LayoutHTML sendt til nettleseren med innholdstypen text/html; charset=utf-8, for eksempel via print $LayoutHTML;.
For ikke-aktiverte eller interne domener merkes utdataene med noindex, nofollow slik at disse sidene ikke blir indeksert av søkemotorer.
22. Skriv cache
Etter sideutgangen kan CMS lagre den ferdig genererte siden i cachen. Forutsetningen er at ingen S_User er pålogget, at siden ikke er i redigeringsmodus og at cachen for denne siden er aktivert.
Ved senere kall kan den lagrede HTML-siden brukes uten å måtte kjøre den komplette renderingsprosessen på nytt.
FAQ
hva kunder ofte spør oss om
Hva er prosessen for nettsted-rendering?
Tutorialen beskriver behandlingsstegene som bluetronix CMS bruker for å generere den ferdige HTML-siden fra side- og layoutdata og returnere den til nettleseren.
Hvilke sikkerhetssjekker utføres før databasen forbindes?
Før databasen forbindes, utføres blant annet Secure Check, sjekk av antall kall, forberedelse av MySQL-parametere og analyse av GET- og POST-parametere.
Når lastes modulkonfigurasjonen?
Filen /bx_Mod/config_own.php lastes, hvis den eksisterer, allerede før økten startes og før forbindelsen til databasen opprettes.
Hva brukes S_User, S_Language og Web_User til?
S_User refererer til CMS-brukeren eller redigeringsmodus, S_Language er det nåværende språket for nettstedet, og Web_User er brukeren av en frontend-innlogging.
Hvilke databaser table kommer side og layout fra?
Sideopptakene lastes fra 00_site. Den tilknyttede layouten leses fra 00_layout og behandles i $LayoutHTML.
Når kjøres PHP-koden til en side?
Ved generering av header og dynamisk innhold kjøres sidekoden via eval($SitePHP) og inkludert PHP-kode via eval($IncludePHP).
Når brukes språkuavhengige JavaScript-filer?
Når passende språklige varianter er tilgjengelige, kan BxScript.js og BxHeadScript.js erstattes med de tilsvarende språkspesifikke filene.
Hvordan bestemmes mørke- eller lysmodus?
CMS leser filen /bx_style/BxSource/CSSEditDarkLight.bx og setter visningsmodusen i layouten basert på innholdet.
Når blir tekster automatisk oversatt?
Når det nåværende språket avviker fra $GBMainLang, blir de tilsvarende merkede tekstene oversatt basert på oppføringene i tabellen Translation.
Under hvilke betingelser blir den ferdige siden cachen?
Cachen kan skrives når ingen S_User er logget inn, siden ikke er i redigeringsmodus, og cachen for denne siden er aktivert.