# Движок на файлах в 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; ?>`

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

← →
↑