Движок на файлах в 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 будет первый файл, по урлу /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; ?>

Реализуйте описанный движок на файлах.