PHPda fayllarga asoslangan dvijok
Bizga shablon faylini yaratishga imkon beradigan sayt dvijogini amalga oshiramiz, unga URLga qarab turli kontent ulanadi.
Bizning sahifamizning tuzilishi quyidagicha boʻlsin:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Kontent joylashishi kerak boʻlgan joyga oʻzimiz
oʻylab topgan qandaydir buyruqni joylashtiramiz,
masalan shunday: {{ content }}. Saytimiz
shablonini oʻzgartiramiz:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
Endi view papkasini yaratamiz, unga
kontent fayllarini joylashtiramiz. Toʻgʻridan-toʻgʻri
shu papkada yoki undagi pastki papkalarda.
Birinchi fayl shunday boʻladi:
<div>
content 1
</div>
Ikkinchi fayl shunday boʻladi:
<div>
content 2
</div>
Uchinchi fayl shunday boʻladi:
<div>
content 3
</div>
Endi manzol satridagi URLga mos keladigan
fayl tortib olinsin. Bizning holatda /page1
URLi birinchi faylga, /dir/page2
- ikkinchisiga, va /dir/sub/page3
- uchinchisiga mos keladi.
Amalga oshirishni boshlaymiz. Avval .htaccess
faylida barcha soʻralgan manzillar, resurs fayllaridan
tashqari, index.php sahifasiga yoʻnaltirilsin:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
index.php sahifasida soʻralgan URLni
oʻzgaruvchiga olamiz:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Keyin shablon faylining matnini olamiz:
<?php
$layout = file_get_contents('layout.php');
?>
Endi URL boʻyicha view papkasidan
mos keladigan kontent faylini olamiz:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
Shablon matnidagi oʻylab topgan buyrugʻimizni fayldan olingan kontent bilan almashtiramiz:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
Shablonga almashtirilgan shablon faylini brauzerga chiqaramiz:
<?php
echo $layout;
?>
Hammasini birlashtirib, quyidagi kodni olamiz:
<?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;
?>
Tasvirlangan fayllarga asoslangan dvijokni amalga oshiring.