Motor në skedarë në PHP
Do të implementojmë një motor website-i, i cili do të na lejojë të krijojmë një skedar shablloni, tek i cili në varësi të URL do të lidhet përmbajtje e ndryshme.
Le të supozojmë që struktura e faqes sonë duket si në vijim:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
content
</main>
<header>
footer
</header>
</body>
</html>
Tani, në atë vend ku duhet të bëhet futurja e përmbajtjes
le të vendosim ndonjë komandë të imagjinuar
nga ne për futje, për shembull si kjo:
{{ content }}. Le të ndryshojmë shabllonin e website-it tonë:
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<header>
header
</header>
<main>
{{ content }}
</main>
<header>
footer
</header>
</body>
</html>
Tani le të krijojmë dosjen view, në të cilën
do të vendosim skedarët e përmbajtjes. Drejtpërdrejt në këtë
dosje ose në nëndosje.
Skedari i parë do të jetë i tillë:
<div>
content 1
</div>
Skedari i dytë do të jetë i tillë:
<div>
content 2
</div>
Skedari i tretë do të jetë i tillë:
<div>
content 3
</div>
Tani le të bëjmë që sipas URL
në shiritin e adresave të tërhiqet skedari përkatës
Në rastin tonë, përmes url /page1
do të jetë skedari i parë, përmes url /dir/page2
- i dyti, dhe përmes url /dir/sub/page3
- i treti.
Le të fillojmë implementimin. Fillimisht në skedarin
.htaccess le të bëjmë që të gjitha adresat e kërkuara,
përveç skedarëve të burimeve, të ridrejtohen
në faqen index.php:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|css|ico|jpg|png|gif)$
RewriteRule .+ index.php
Në faqen index.php do të marrim në një variabël
URL-në e kërkuar:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
Pastaj do të marrim tekstin e skedarit me shabllonin:
<?php
$layout = file_get_contents('layout.php');
?>
Tani përmes URL do të marrim nga dosja view
skedarin përkatës të përmbajtjes:
<?php
$content = file_get_contents('view' . $url . '.php');
?>
Le të zëvendësojmë në tekstin e shabllonit komandën e imagjinuar nga ne me përmbajtjen e marrë nga skedari:
<?php
$layout = str_replace('{{ content }}', $content, $layout);
?>
Le të shfaqim në shfletues skedarin e shabllonit me shabllonin e vendosur:
<?php
echo $layout;
?>
Le të mbledhim të gjitha së bashku dhe do të marrim kodin e mëposhtëm:
<?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;
?>
Implementoni motorin e përshkruar në skedarë.