Пишем свою CMS на PHP

На сегодня очень много CMS обслуживают сайты и интересы своих пользователей. Выбирая CMS для себя, можно обнаружить, что проще и удобнее писать свою. Эта статья поможет понять, какую функциональность можно внедрять, а какую не обязаельно.

 

0. Почему возникла необходимость писать CMS

Автор данного сайта имеет небольшой опыт выбора CMS. Опыт такой:

  1. WodPress взламывали постоянно, хотя это абсолютно удобная в использовании и доработке CMS.
  2. Joomla имела слишком неудобный интерфейс и непонятное меню, а также непонятную архитерутуру модулей
  3. Drupal была очень надёжной, удобной, понятной, с грамотной архитектурой и большим сообществом система. Но эта CMS стала слишком требовательна к ресурсам (памяти), код усложняется с нкаждой новой версией, управлять системой становится сложно и дорого (нужно много ram-памяти)

Так как лучшей была CMS Drupal, то свою CMS будем создавать по образу Drupal, хотя конечно, намного проще.

 

1. Какие функции необходимы

Здесь необходимо выяснить, какие задачи будет обслуживать ваша CMS - пару сайтов, с доработкой CMS под каждый проект. Или несколько сайтов с унификацией функций для работы под схожие, но всё-таки немного разные задачи.

  1. Работа с базой данных
  2. Разделение сущностей на записи, термины таксономии, меню, блоки
  3. Мультиязычность
  4. Чистые ссылки

Писать CMS для сообщества на данном этапе нет необходимости. Будем писать CMS для своего сайта или нескольких своих сайтов, редактируя код под каждый, но по возможности унифицируя функционал.

 

2. Подход к програмированию

  1. ООП: для удобной манипуляции записями лучше пользоваться объектами
  2. Не использовать фреймворки для упрощения кода и упрошения работы над обновлениями
  3. Model-View-Controller для возможности управления процессом генерации страниц на разных этапах. Или какой-либо более новый метод

 

3. С чего начать

  1. Продумать архитерутуру: разделить и упорядочить все необходимые сущности, продумать их управление
  2. Написать страницу авторизации
  3. Написать страницу добавления материала и страницу отображения материалов