Как написать простую CMS на PHP

Как написать простую CMS на PHP

Как написать CMS на PHP

В этой статье я хочу показать как написать самый простой движок на PHP


Он настолько простой, что проще некуда. А что бы сделать его еще проще, напишем его на файлах. То есть, база данных использоваться не будет. Что будет приятной новостью для тех, кто не имеет возможности использовать БД и для тех кто хочет получить максимально быстрый движок с минимально малой нагрузкой на хостинг.

Естественно, он не будет иметь административную часть, но при небольшом количестве страниц это не будет иметь практически никакого значения. В конце статьи можно скачать рабочий пример и есть ссылка на сайт который работает на данном движке.
Итак, приступим.

Движок будет состоять из 3 частей:
1. index.php – основной скрипт движка
2. template.php – шаблон сайта
3. main.php – и последующие файлы с разными именами, которые будут содержать контент страниц сайта.

Рассмотрим файл index.php:


if(!isset($page)) $page = ‘main’;

/* Смысл этой части скрипта заключается в том, что через переменную $_GET[‘page’] мы получаем от браузера пользователя имя страницы которую он хочет получить. Обратите внимание, что значение переменной, будет полностью совпадать с именем того скрипта php в котором будет содержатся текст для выводимой страницы. При входе на главную страницу переменная $page окажется неопределенной. Что мы и выясняем через выражение !isset($page) Так как оно вернет в этом случае true (из-за инвертора «!») то выполнится строка $page = ‘main’; и мы получим значение главной страницы.
Символ @ перед $_GET означает что мы игнорируем предупреждение о том, что переменная будет неопределенна. Так как мы её в дальнейшем обрабатываем в этом случае, использование в таком виде вполне оправданно. Если символ убрать, то при входе на сайт появится предупреждение Notice: Undefined index: page in и т.д. На других страницах предупреждение будет отсутствовать.

Далее, мы выясним на всякий случай, существует ли файл PHP соответствующий имени страницы. Это необходимо для того, что бы случайно не оказалось так, что его в природе не существует. Можно обойтись без такой проверки и сайт будет прекрасно работать, но для очистки совести и во имя страницы 404 мы такую проверку сделаем 🙂
Так как мы для контента определили отдельную папку, что бы было удобнее их отличать от файлов движка, будем прибавлять путь до файлов относительно корня и в папку со скриптами контента. Точка впереди папки ./content означает что мы ведем отсчет от корня сайта. Есть еще способ через получения абсолютного пути, но мы его рассматривать не будем
*/
if(!file_exists(«./content/$page.php«)) $page = ‘404′;

/*
Смысл этой части похож на предыдущий. Выясняем с помощью функции file_exists, наличие файла $page.’.php’ и если такого файла нет, то выносим окончательный приговор — страница 404! Кстати, на хостинге в настройках можно указать страницу example.ru/index.php?page=404 в качестве страницы 404 и любые неликвидные ссылки будут вести именно на страницу 404

Дальше подключаем скрипт нужного файла контента:
*/

include «./content/$page.php«;

/* И последний, заключительный аккорд — подключаем файл шаблона сайта: */

include template.php‘;
?>


Итого: для файла движка index.php нам понадобилось написать всего 5 строк кода!

Рассмотрим теперь файл скрипта контента. Все файлы скриптов будут похожи друг на друга. За исключением того что текстовые данные в них будут отличатся. Но по структуре они будут одинаковы.
На примере main.php:


$title = ‘Главная страница | Добро пожаловать!‘;
/* Переменная $title нужна для того что бы вывести заголовок страницы. Можно обойтись и без неё, но так будет красивее и нагляднее
Более того, таким же образом можно описать любые данные которые выводятся на нужную нам страницу и в нужную позицию. Например можно описать meta description и keywords и прочие приятные вещи, однако в данном примере я не буду их показывать, это можно будет при желании добавить самим разобравшись в принципе работы движка.
*/

$content = ‘Добро пожаловать на сайт, который работает на самом маленьком движке в мире!‘;
/* Переменная $content будет содержать текст данной страницы. Ну вот и все что можно сказать об этом файле */
?>


Файл контента устроен еще проще чем движок. Собственно более о нем и нечего сказать. Все очень просто. По такому же принципу устроена страница 404.php и все остальные последующие. Что бы указать ссылку на главную страницу или на другие по имени файла скрипта используем URL следующего вида: http://example.ru/index.php?page=main где example.ru — ваш домен main — имя файла страницы контента.

Теперь приступим к рассмотрению шаблона сайта. Для упрощения я приведу лишь принцип работы. В примере готового движка который можно скачать в конце статьи, будет содержать html шаблон, который выглядит и функционирует как полноценный сайт.

Вот примерный принцип работы шаблона template.php:





Строка выводит текст заголовка в шаблон. Помните мы её описывали в main.php? После последовательного подключения main.php и template.php $title оказывается заполненной нужными данными которые теперь и выводятся в template.php Строку можно записать и так: <? echo $title; ?> Что будет то же самое, но предыдущий пример короче и удобнее. Важно не забывать точку с запятой после имени переменной, ибо конструкция <? ?> означает что внутри находится PHP код.
Таким же образом работает и для вывода контента. В шаблон естественно все ссылки на страницы приходится ставить вручную. Но можно написать специальный скрипт меню. Что естественно усложнит сам движок, а это совсем другая история…

А что дальше? А дальше все! Наш движок готов, и он вполне себе функционирует. Осталось скачать любой html шаблон и можно создавать и наполнять сайт.