ფაილებზე მომუშავე ძრავა PHP-ში
ჩვენ განვახორციელებთ საიტის ძრავას, რომელიც მოგვცემს საშუალებას შევქმნათ თარგის ფაილი, რომელსაც URL-ის მიხედვით სხვადასხვა კონტენტი მიერთება.
დაე, ჩვენი გვერდის სტრუქტურა ასე გამოიყურებოდეს:
<!DOCTYPE html>
<html>
<head>
<title>სათაური</title>
</head>
<body>
<header>
header
</header>
<main>
კონტენტი
</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-ის მიხედვით
მიერთებული იყოს შესაბამისი
ფაილი. ჩვენს შემთხვევაში, URL /page1-ისთვის
იქნება პირველი ფაილი, URL /dir/page2-ისთვის
- მეორე, და URL /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;
?>
განახორციელეთ აღწერილი ფაილებზე მომუშავე ძრავა.