MaxSite CMS

Это не адская белочка =)Работая с различными CMS, пожалуй каждый php-программист постоянно ощущает на своей шкуре недостаток либо функционала, либо гибкости, либо того и другого. И пожалуй каждый программист мечтает написать свою CMS с блекджеком и прочими радостями.

Вот я, например. Постоянно нахожусь в поиске идеальной для меня CMS. Для меня CMS идеальна, если она во-первых легка для разработки дополнительных фишек (модулей, плагинов — как вам удобнее), но во-вторых достаточно глубоко проработана, чтобы не слишком много разрабатывать. Понятно, что универсального решения нет, но хочется.

Так или иначе, эти искания привели меня к просмотру различных CMS на CodeIgniter. С одной стороны готовая CMS, а с другой стороны хорошо документированный и знакомый фреймворк, который позволяет легко добить свои дополнения.

Различных CMS на CodeIgniter много, но я давно уже хотел потрогать MaxSite CMS. Вот результат моих троганий.

Общая идея
=============================
Изначально MaxSite CMS задумывался как противоположность WordPress.

WP весь из себя неповоротливый, тяжёлый и ресурсоёмкий, но зато с кучей гламурных плагинов и добротно сделанной админкой. Ресурсоёмкость связана с огромным количеством “лишних” библиотек, функций, запросов к БД. И всё это неочевидно, непрозрачно. Зато WordPress — это идеальная CMS для чайников. Они могут начинать работать практически сразу.

Разработчики WP тоже могут что-то делать, но они изначально поставлены в достаточно жёсткие рамки. Тут не трогай там не ходи и далее в таком же духе.

MaxCMS задумывался разработчиком не для пользователей, а более для себя. Чтобы не было ничего лишнего. Чтобы запросы к БД посылались, тогда когда они действительно нужны. Чтобы дополнительная мишура цеплялась только когда была нужна. И чтобы разработчик имел практически полную свободу действий! Даже если простому чайнику что-то покажется не совсем удобным.

Инсталляция MaxSite 0.42
=============================
То что CMS не для чайников видно на этапе установки, ибо она не полностью автоматизирована. В архиве с файлами идёт инструкция по установке из 8 пунктов, из которых практически все — редактирование конфигов и манипуляции с файлами, и только один пункт содержит привычное — “Запустите в браузере «http://ваш сайт/» и следуйте инструкциям.”

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

Ощущения пользователя.
=============================
Вообще CMS производит ощущение законченного продукта. Всё отлажено, всё на месте. Довольно таки спартанскую по-началу админку можно украсить какой-нибудь темой. Тем для админки поставляется 8 штук. Готовых тем оформлений самого сайта поставляется только 3, но я уже нашёл два сайта с халявными темами для MaxSite. А вообще CMS делалась конечно же для тех, кто сам в состоянии нарисовать себе нужную тему на основе имеющихся.

После установки MaxSite работает как готовый блог. Те, кто привык к WordPress, довольно быстро освоятся. Работает действительно шустро. А показания используемой памяти в футере и правда радуют. В зависимости от насыщения шаблона виджетами используемая память варьируется в пределах 4Мб. В то время как WP 3.0.3 использует не меньше 15Мб.

Довольно много плагинов. Меньше чем в WP, но достаточно, чтобы глаза разбежались.

Вот пожалуй и всё про пользовательский интерфейс.

Ощущения разработчика.
=============================
Допустим нам нужно что-то допилить для своих целей. Для этого предлагаю заглянуть в исходный код.

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

Как это работает? Взглянем на роуты:
application/config/routes/php

$route['default_controller'] = "maxsite";
$route['scaffolding_trigger'] = "";

//$route[':any'] = "maxsite";
$route['(\S+)'] = "maxsite/$1";
$route['(\S+)/(.+)'] = "maxsite/$1/$2";
$route['(\S+)/(.+)/(.+)'] = "maxsite/$1/$2/$3";
$route['(\S+)/(.+)/(.+)/(.+)'] = "maxsite/$1/$2/$3/$4";
$route['(\S+)/(.+)/(.+)/(.+)/(.+)'] = "maxsite/$1/$2/$3/$4/$5";
$route['(\S+)/(.+)/(.+)/(.+)/(.+)/(.+)'] = "maxsite/$1/$2/$3/$4/$5/$6";
$route['(\S+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)'] = "maxsite/$1/$2/$3/$4/$5/$6/$7";
$route['(\S+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)/(.+)'] = "maxsite/$1/$2/$3/$4/$5/$6/$7/$8";

Все запросы на любой URL перенаправляются на контроллер maxsite, он же контроллер по-умолчанию. В контроллере определён метод _remap, который полностью переопределяет вызов функций. Дальше от привычного мне CodeIgniter практически ничего нет. И это для меня разочарование.

Далее разработчик может реализовывать свой функционал двумя путями:
* Шаблоны
* Плагины

Должен сказать, что для MaxCMS шаблон — это не просто визуальный дизайн. Очень большая часть логики приложения находится в шаблонах. Это выглядит отходом от архитектуры MVC, смешиванием работы верстальщика и программиста, но тем не менее это принципиальная позиция разработчика.

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

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

На блоге разработчика довольно много информации о CMS. Так что документация имеется.

Резюме
=============================
Как готовая система MaxCMS очень даже юзабельна. Но допиливать под себя я пожалуй не буду. Немного не моя философия.

А не написать ли мне свою CMS с блекджеком и прочими прелестями? Кстати =)

MaxSite CMS: 11 комментариев

  1. Тимур

    Есть еще Pyrocms на CodeIgniter(pyrocms.com) Но самому не нравится довольна таки большое количество наворотов. А так довольна интересная CMS. На ее основе сделал свою. Не так много всяких фишек, но зато ее хорошо знаешь и потому допиливается очень легко.

  2. Altesack

    @ Тимур:
    Кстати, мне очень понравилось PyroCMS! Очень перспективная разработка! Но её и правда нужно допиливать.

    Замеченные недостатки
    * типовые шаблоны не все тупо работают.
    * новости у меня тупо не добавляются, я даже не понял почему!
    * права пользователей, только два варианта — может всё или не может ничего.

    А можно где-то глянуть ваш доработанный вариант?

  3. IAD

    я свою на CI написал, в своём легче разбираться.

  4. Тимур

    @ Altesack:
    У меня не то, чтобы доработанный вариант, а скорее при написании многие идеи брались из pyrocms.
    После нового года выложу в открытый доступ, дам ссылку.

  5. quantum

    >Это выглядит отходом от архитектуры MVC, смешиванием работы верстальщика и программиста

    Тут или заложил определенный функционал, загрузил все мыслимые и немыслимые данные и отдал все это в шаблон. MVC во всей красе, верстальщики довольны. Но медленно.

    Или сам определяй, что тебе нужно выводить, то и загружай. По сути шаблон в MS это view+controller. Для публичной цмс только так и можно

  6. alexpts

    Обязательно пиши!

    Я тоже смотрел несколько CMS, т.к. честно сказать уже надоел и ничего нового и интересного я в нем не вижу, т.е. некуда расти дальше. MaxSite я увы не осилил, т.к. все таки привык к стилю ВП шаблонов. В МаксСайте они все же немного сложнее и нужно разбираться.

    Я порядка 6 месяцев пишу уже движок для себя, аналог ВП, с привычной мне архитектурой шаблонов и др. Именно так, как удобно и привычно мне, хоть это местами и выглядит не логично. Я 2 раза полностью все удалял и начинал сначала. До рабочего полного продукта еще далеко, но зато я стал увереннее намного писать на php и представлять многие процессы, которые раньше были достаточно абстрактны. Вообщем это дело в кайф!

    Обязательно начни писать свое движок с блэкджеком и шлюхами, даже если ты потом его закинешь или ничего здравого не выйдет!

  7. Роман

    > Взглянем на роуты: application/config/routes/php

    Я по началу даже подумал, что ты шутишь… Ан нет, эта жесть реально в роутах, а что там в контроллере MaxSite слабонервным лучше не видеть. Ну как такую хрень можно было на базе CI написать? В голове не укладывается…

  8. altesack Автор записи

    Роман пишет:

    > Ну как такую хрень можно было на базе CI написать? В голове не укладывается…

    Ну написать-то можно. И главно работает! И шустро работает! И даже расширяемо!

    Но это уже не CodeIgniter.
    И хренью я бы это не назвал. :)

  9. Kroitor

    Altesack, даже пляски с бубном не помогли найти ваш email или форму обратной связи на сайте. Поэтому прошу прощенья за то что перевожу комментарии в другое русло. Но мне кажется вам будет интересно почитать о Einplac CMS, на мой взгляд замечательная CMS для сайта визитки. Всего из одного файла http://myworld.lv/einplaccms.html

  10. Константин

    Люди, вы совсем забыли про замечательный движок ImageCMS, который так же написан на CI, причём довольно профессионален, использует jQuery, модулей не много, но шаблонизация и гибкость на достаточно хорошем уровне. Недавно написал модуль для него, кстати это был мой первый опыт работы с CI — http://chuikoff.ru/blog/news/razrabotka-novogo-modulya-dlya-imagecms зацените)

Комментарии запрещены.