Принципы построения правильной мини-CMS на PHP и MySQL

doran7

Новичок
Принципы построения правильной мини-CMS на PHP и MySQL

Исходные условия (аналог установок заказчика)

CMS для личного пользования (личных проектов), не для широкого распространения. Основная ориентация - социалка.
PHP, MySQL, без ORM и AR, скорее без MVC.
Работа только с БД MySQL, использование ext/mysqli (без PDO), скорее чистый SQL чем API и DAL.

Организация

Шаблоны и скрипты - в файлах, данные - в БД MySQL.

Модули ядра

1. Админка (бзк-энд).
2. Система регистрации пользователей.

Основные подключаемые модули (сниппеты, плагины, виджеты и пр. скрипты) - самописные скрипты PHP

1. Вывод анонсов новостей или статей с пагинацией (есть самописный на mysqli).
2. Комментарии.
3. Опросы (голосование).
4. Поиск на сайте.
5. Форма обратной связи.

Дополнительные подключаемые модули

* Все что угодно

Подключаемые приложения Open Sours

* Форум, ориентировочно движок SMF.


PS. Причина вопроса, имеющийся опыт

Заниматься разработкой сайтов, веб-программированием и изучением PHP стал с апреля 2012 года, до этого имел кое-какое представление о программировании, делал сайты на статическом HTML. Английский, в области информатики и программирования - на среднем уровне.

* Нерационально потраченное время на освоение Друпала, сделал на нем пару рабочих сайтов.
* Более рационально потраченное время на освоение MODX, сделал на MODX Evo несколько сайтов. В основном, все устраивало, но официальная разработка и поддержка Evo прекратились, а следующая ветка MODX Revo, которое имеет жестко вшитое в ядро ORM, меня не устраивает.

Очень жаль потерянного времени (несколько месяцев) на освоение Друпала. Если бы вместо этого тихо и скромно изучал PHP ... даже думать страшно о том, сколько времени потеряно. Прекращение разработки и поддержки Evo воспринял как жесткое кидалово (к тому моменту уже было на Evo немало своих наработок), а в одиночку мне CMS уровня MODX Evo, перекраивая его под себя и как-то поддерживая, не потянуть. Легче, наверное, сделать что-то свое на PHP.

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

Redjik

Джедай-мастер
возьми какой-нибудь микро фреймворк и делай на нем... иначе потом будет очень жалко времени, потраченного на CMS (мой случай), а так советую глянут Wordpress, из-за популярности - голодным не останешься и последнюю Joomla - неплохой код, хорошая админка из коробки, а с знаниями PHP и Mysql, все пойдет как по маслу, если разобраться =)

По своему опыту - я делаю так. Создаю таблицу в базе данных, генерю через Yii для этой таблицы контроллер с crud
- по сути за 5-10 минут имею таблицу и админ часть для новостей (для примера), потом еще 5-10 минут выводы во фронтенд новостей + виджет
- в сумме с перекурами и кофе, за час полностью готовый простенький модуль
 

doran7

Новичок
Redjik, благодарю за ответ. Yii периодически просматриваю и он мне нравится. Но для меня пока сложноват и тяжеловат, он ведь для профессионалов, а я любитель...:). Мне бы что-то совсем простецкое посмотреть... Например, вот здесь некоторые полезные подходы увидел:
http://acvarif.info/wbsphp/adminphp.html

Сама Acvarif-CMS - на файлах, но по ней PHP изучать мне нравится. Вот что-нибуть такое же, только на MySQL и в микро-варианте.

Кое что полезное здесь есть:
http://ruseller.com/project.php?id=11

Насчет времени, потраченного на CMS... я ее пока не делаю, а только присматриваюсь. Все живое и рабочее делаю на MODX Evo, пока она жива.

В принципе, есть в природе разные готовые PHP-скрипты админки, системы регистрации юзеров, скрипты комментариев, опросов и т.д. Их под себя переделать не так уж сложно. Мне главное понять принцип построения правильной CMS... чтобы не лепить всякие eval-ы и скрипы в БД, как это в MODX сделано.

Была такая бредовая мысль, попробовать прилепить к ядру своей CMS форум SMF и использовать его систему регистрации юзеров для своей CMS (свою не делать, или сделать по минимуму). Форум все одно какой-то нужен. Вообще, хорошие форумные движки быстро довольно работают, исходники в них интересно просматривать.

Еще... Если ты мой первый пост в теме особо не критикуешь, то я буду считать что в грубом приближении основное в нем правильно...:) А дальше буду копать помалу в этом направлении.

С наступающим, однако.
 

WMix

герр M:)ller
Партнер клуба
нравится Yii? пиши под ним, начни с готового, скачай кучку модулей, настроя это поначалу независимо от своего проджекта, подглядывай туда, подкручивая его под себя, задачик будет много, и сессию скрутить, и дизайн,... и вскоре выучишь Yii лучше... и компонентами пишут и своим кодом, да и как писать то, если не понимаешь что уже существует?...
я юзаю зенд, но это не показатель!

и тебя с наступающим!
 

doran7

Новичок
Благодарю, WMix. На Yii не агитируй, мне еще рано туда. Первая моя мини-CMS будет на чистом PHP и MySQL, без фреймворков. Это нулевой этап, фундамент, который мне обязательно надо пройти. Yii - это следующий этап. Иначе я просто не почувствую всех преимуществ Yii, и его недостатков тоже. А они ведь тоже есть.
 

WMix

герр M:)ller
Партнер клуба
doran7
чтоб понять преимущества недостатки, нужно взять хотяб 5 различных фреймворков, желательно парочку на яве, тогда точно будет понятны преимущества недостатки...
но если хочешь изучать с нуля, и не потерпеть фиаско, не пиши ничего большого.. не трать время в пустую,..
не возможно написать что-то путное не понимая в программировании нихрена! куча мелочей, которые мешали писать масштабный код, было изучено, синяки набиты,... а ты только начнешь это понимать.... неговоря уже о том что для того чтоб вписать тебе придеться постоянно лопатить код от начала до конца!
 

doran7

Новичок
Убьют меня тут за сомнения в непогрешимости Yii... :)

но если хочешь изучать с нуля, и не потерпеть фиаско, не пиши ничего большого.. не трать время в пустую,..
Я пишу пока только отдельные скрипты для сайтов на MODX Evo. Мысль о мини-CMS появилась после того, как я просмотрел много всяких готовых решений (PHP-скриптов) для компонентов CMS, и увидел, что вполне можно сделать сайт и с нуля, без CMS. Но хоть какое-то минимальное управление контентом и юзерами должно быть. Вот я так и прикинул, что в ядре мини-CMS должно быть по минимуму два компонета - админка и управление юзерами. А остальное можно подвесить дополнительно к этому ядру, в зависимости от потребностей.

Писать никаких CMS сейчас не собираюсь, пока не пойму четко, какова должна быть структура такой мини CMS.
 

Vladson

Сильнобухер
увидел, что вполне можно сделать сайт и с нуля
Это очень даже легко, только поддержу мысль что не стоит писать что-то большое. Больших и так полно, лучше пусть будет по минимуму, но максимально качественно на сколько тебе хватит терпения и настойчивости.

Мой главный принцип "мини-CMS" это "минимум кода" (выглядит как капитанская очевидность, увы почему-то далеко не все об этом помнят)
 

AmdY

Пью пиво
Команда форума
doran7
сделать cms в разы сложнее чем освоить фреймворк, так что стоит начинать с более простого.
 

Василий М.

Новичок
Вот я так и прикинул, что в ядре мини-CMS должно быть по минимуму два компонета - админка и управление юзерами. А остальное можно подвесить дополнительно к этому ядру, в зависимости от потребностей.
Если ты хочешь написать CMS, то начинать надо не с админки или регистрации пользователей, а с архитектуры. "Админка" НИЧЕМ не отличается от любого другого модуля кроме проверки прав пользователя. "Система регистрации пользователей" - не может быть "модулем ядра". Нет вообще никакого "модуля ядра". Ядро по определению - это набор функций или классов, способный делать какой-то "базовый" вебовский функционал, типа роутинга виртуальных адресов, работа с СУБД, отделение кода от шаблона. Т.е. это фреймворк в современном определении - базовый набор кода, который упрощает разработку. Не важно, Yii фреймворк это или твой собственный говнокод на функциях.

В принципе, есть в природе разные готовые PHP-скрипты админки, системы регистрации юзеров, скрипты комментариев, опросов и т.д. Их под себя переделать не так уж сложно
"Есть ВАЗ, есть Мерседес, а я хочу создать свой собственный автомобиль на их базе". В итоге ты создаешь нечто ужасающее из различных компонентов, что в итоге приведет твой проект к загниванию. Хотя бы потому, что будет разный стиль кодирования, будут разные API для работы с СУБД, будет разная архитектура. Это все - не CMS "для личного пользования", это халтура, которая приведет к проблемам.

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

иначе потом будет очень жалко времени, потраченного на CMS (мой случай)
жалко времени? что за вздор? любые велосипеды - это приобретение бесценного опыта в разработке. На http://www.cyberforum.ru я регулярно вижу темы, как люди берут фреймворки и пишут на них чудовищные вещи. Они совершенно не понимают что они делают, зачем им фреймворк.

Лично я познал что такое ООП, MVC, шаблонизация, роутинг - на собственном опыте. И я считаю что я очень хорошо теперь понимаю что есть что и как это делается. Но перед тем как понять, я написал на этом форуме тучу вопросов, которые были неразрывно связаны с практикой.
 
Сверху