Рухавік на файлах у 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;
?>
Рэалізуйце апісаны рухавік на файлах.