PHPде файлдер боюнча движок
Бизге шаблон файлын түзүүгө мүмкүндүк бере турган, андан URLга жараша ар түрдүү контент туташтырыла турган сайттын движогун ишке ашырабыз.
Биздин баракчабыздын түзүлүшү төмөнкүдөй болсун:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Контент киргизилиши керек болгон жерге, биз тапкан
койгон киргизүү буйругуңузду киргизели, мисалы мындай:
{{ content }}. Сайтыбыздын шаблонун өзгөртөлү:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
Эми view деген папка түзөбүз, ага
контент файлдарын жайгаштырабыз. Так ушул папкага же
анын ичиндеги папкаларга.
Биринчи файл мындай болот:
<div>
content 1
</div>
Экинчи файл мындай болот:
<div>
content 2
</div>
Үчүнчү файл мындай болот:
<div>
content 3
</div>
Эми даректик саптан келген URL боюнча туура
файл тартылып алынсын. Биздин учурда /page1
урлу боюнча биринчи файл, /dir/page2
урлу боюнча экинчи, жана /dir/sub/page3
урлу боюнча үчүнчү файл алынсын.
Ишке ашырууну баштайлы. Адегенде .htaccess
файлында, ресурстардын файлдарынан башка бардык суралган
даректер, index.php баракчасына багытталышын
кылалы:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
index.php баракчасында өзгөрмөгө суралган URLди
алалы:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Андан кийин шаблон файлынын текстин алалы:
<?php
$layout = file_get_contents('layout.php');
?>
Эми URL боюнча view папкасынан
туура контент файлын алалы:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
Шаблондун текстинде биз койгон буйрукту файлдан алынган контентке алмаштыралы:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
Браузерге коюлган шаблон менен шаблон файлын чыгаралы:
<?php
echo $layout;
?>
Баарын чогултуп, төмөнкү кодду алабыз:
<?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;
?>
Сүрөттөлгөн файлдар боюнча движокту ишке ашырыңыз.