⊗ppPmSDFl 437 of 447 menu

Súborový engine v PHP

Realizujeme engine stránky, ktorý nám umožní vytvoriť súbor šablóny, ku ktorému sa v závislosti od URL bude pripájať rôzny obsah.

Nech štruktúra našej stránky vyzerá nasledovne:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> content </main> <header> footer </header> </body> </html>

Na miesto, kde má dochádzať k vloženiu obsahu, vložme nejaký príkaz na vloženie, ktorý sme vymysleli, napríklad takýto: {{ content }}. Zmeňme šablónu našej stránky:

<!DOCTYPE html> <html> <head> <title>title</title> </head> <body> <header> header </header> <main> {{ content }} </main> <header> footer </header> </body> </html>

Vytvorme teraz priečinok view, do ktorého umiestnime súbory s obsahom. Priamo v tomto priečinku alebo v podpriečinkoch.

Prvý súbor bude takýto:

<div> content 1 </div>

Druhý súbor bude takýto:

<div> content 2 </div>

Tretí súbor bude takýto:

<div> content 3 </div>

Urobme teraz to, aby sa podľa URL z adresného riadku načítal príslušný súbor. V našom prípade pri URL /page1 to bude prvý súbor, pri URL /dir/page2 - druhý, a pri URL /dir/sub/page3 - tretí.

Poďme k realizácii. Najprv v súbore .htaccess urobme to, aby všetky požadované adresy, okrem súborov zdrojov, boli presmerované na stránku index.php:

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$ RewriteRule .+ index.php

Na stránke index.php získame do premennej požadovanú URL:

<?php $url = $_SERVER['REQUEST_URI']; ?>

Potom získame text súboru so šablónou:

<?php $layout = file_get_contents('layout.php'); ?>

Teraz podľa URL získame z priečinka view príslušný súbor s obsahom:

<?php $content = file_get_contents('view' . $url . '.php'); ?>

Nahradíme v texte šablóny vymyslený príkaz na získaný obsah zo súboru:

<?php $layout = str_replace('{{ content }}', $content, $layout); ?>

Vypíšme do prehliadača súbor šablóny s dosadeným obsahom:

<?php echo $layout; ?>

Zhromaždíme všetko dokopy a získame nasledujúci kód:

<?php $url = $_SERVER['REQUEST_URI']; $layout = file_get_contents('layout.php'); $content = file_get_contents('view' . $url . '.php'); $layout = str_replace('{{ content }}', $content, $layout); echo $layout; ?>

Realizujte popísaný súborový engine.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť