Раз принято решение написать свою собственную CMS начну с начала — технического задания.

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

Необходимо описать все основные возможности будущей CMS, что я от неё хочу и какие задачи она должна решать.

Я сам никогда не работал программистом, хотя однажды написал собственную CRM так же на PHP. Однако это было давно и я уже почти ничего не помню.

Был опыт работы с программистами в качестве заказчика по доработке 1С. Это было примерно так:

Я говорю — хочу это, что-бы вот это и вон то, а ещё зелёную кнопку и выделение цветом.

Программист спрашивает — а нафига? Это важно для бухгалтерии, для менеджеров или это будет управленческий отчёт?
Объясняю — мне надо видеть такие и такие данные быстро, а крутить 12 отчётов и выставлять 14 фильтров мне не хорошо.
После этого он уходит в себя на некоторое время. Иногда на несколько дней. И приносит мне техническое решение. Нередко бывает, что техническое решение не совпадает с тем как я себе это представлял и мы общаемся ещё, пока не договоримся. Только после этого он начинает делать.
Когда он всё сделает, я понимаю, что мне снова чего-то не хватает и даю задание на доработку. И снова всё по кругу.

В моём случае я и заказчик и исполнитель в одном лице.

Это как игра в шахматы сам с собой. При этом доска это пазлы которые ещё нужно собрать, а итоговой картинки нет, есть только смутное представление.
Такие дела…

Сегодня я заказчик который имеет кучу желаний и очень примерное понимание того, что должно получиться.

Не приступив непосредственно к разработке представляю себе будущую CMS так:

Это CMS предназначенная для небольшого бизнеса, которому нужно взаимодействовать с клиентами через свой сайт, Писать о своих новинках в блоге и оповещать клиентов о своих новостях.

Должна быть панель управления, блог и сайт. Должна быть возможность в последствии добавлять разные модули. например интернет магазин или чего там мне ещё захочется.

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

Так же нужны разные права пользователей.Администратор может всё. у остальных права такие какие им даст администратор. Например писать посты только в определённый раздел блога.

Для сайта должна быть возможность делать не только странички в едином стиле, но и что-то вроде лендингов, которые не будут вписываться в общий дизайн сайта. Вёрстка лендингов будет заказываться у фрилансеров. Значит нужна возможность вставки стороннего HTML кода всей страницы целиком.

Срок исполнения — вчера.

Продолжение следует…