Файлҳо асосёфта муҳаррик дар PHP
Муҳаррики вебсайтро амалӣ мекунем, ки ба мо имкон медиҳад, ки файли шаблонеро созем, ки ба вобастагии аз URL муҳтавои гуногун ба он васл карда шавад.
Бигзор сохтори саҳифаи мо ба таври зерин намоён гардад:
<!DOCTYPE html>
<html>
<head>
<title>унвон</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Биёед дар ҷое, ки бояд гузориши муҳтаво сурат гирад,
як фармони ихтироъкардаи худро барои гузориш гузорем,
масалан чунин: {{ content }}. Шаблони сайти худро тағйир медиҳем:
<!DOCTYPE html>
<html>
<head>
<title>унвон</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
Акнун папкаи view-ро месозем, ки ба он
файлҳои муҳтаво ҷойгир карда мешаванд. Акнун дар ин
папка ё дар зерпапкаҳо.
Файли аввал чунин хоҳад буд:
<div>
муҳтавои 1
</div>
Файли дуюм чунин хоҳад буд:
<div>
муҳтавои 2
</div>
Файли сеюм чунин хоҳад буд:
<div>
муҳтавои 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;
?>
Муҳаррики тавсифшударо асосёфта бар файлҳо амалӣ кунед.