Μηχανή σε αρχεία σε 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
από τη γραμμή διευθύνσεων να φορτώνεται το αντίστοιχο
αρχείο. Στην περίπτωσή μας, από το 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;
?>
Υλοποιήστε την περιγραφόμενη μηχανή σε αρχεία.