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
URL бойынша бірінші файл, /dir/page2
URL бойынша - екінші, және /dir/sub/page3
URL бойынша - үшінші болады.
Іске кірісейік. Алдымен .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;
?>
Сипатталған файлдар негізіндегі қозғалтқышты жүзеге асырыңыз.