Сайт Земскова Ильи
Веб-мастер, к.т.н., «200000».
Бензин ваш - идеи наши © И.Ильф и Е.Петров

Мой отзыв о maxSite CMS (2009)

За свою карьеру я пересмотрел около десятка различных движков, ещё меньше захотелось опробовать «в бою»: e107 (некоторое время на нём работал интранет-портал для сотрудников ИВЦ ОмГУ), Wordpress (использовался для «домашнего» блога). Все эти знакомства и тестирования всё больше убеждали меня в мысли, что готовые движки очень далеки от моих личных потребностей. Поэтому как и большинство веб-программистов я вынашиваю идею своей ЦМС. Однако я уже давно стремлюсь к тому, чтобы стать кем-то больше, чем «программист». Для этого учусь смотреть на проблемы с точки зрения бизнеса. А эта точка зрения подсказывает, что разработка своей системы управления контентом в моём случае пока не совсем рентабельное занятие. Поэтому нужно искать компромисс и учиться использовать существующие технические решения. Так я обратил свой пристальный взгляд в сторону maxSite CMS. Своим мнением и отзывом о которой я хочу с вами поделиться.

Отзыв о maxSite CMS

У меня были свежи впечатления от Вордпресса - чувство тяжести, неповоротливости, внутренней запутанности меня не оставляет до сих пор. На этом фоне цмс-ка Максима заметно отличалась. Шустрость сразу бросилась в глаза. Также покорила логичность расположения элементов на странице администрирования. Чувство «логичности и продуманности» только усиливалось при знакомстве с внутренним устройством движка.

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

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

Пока делал тему смог понять в чём заключаются некоторые общие минусы maxSite CMS:

  1. При всём стремлении Максима разделить логику и представление (согласно модели MVC), у него не очень «чисто» получилось это сделать. Некоторые оформительские элементы просочились в плагины и это заметно усложняет работу. Так, например, мне пришлось создать свои версии 11 плагинов, чтобы при обновлении движка не потерять нужное мне оформление (такое произошло когда обновлялся с версии 0.29 на 0.31 - в описании апдейта не было ничего про изменения в плагинах, но я их нашёл, ибо мой шаблон «поехал» по непонятным причинам в нескольких местах).
  2. Не совсем удачная внутренняя архитектура движка. Я понимаю, что многое в движке обусловлено использованием фреймворка CodeIgniter. Но вот иногда возникает желание внести свои исправления непосредственно в ядро движка так, чтобы это изменение работало только у меня. И что же? Для тех, у кого такие желания возникают часто и обильно - движок противопоказан, ибо при каждом обновлении придётся перерывать весь код, чтобы внести свои правки в новую версию движка. Собственно, столкнувшись с этим на примере плагинов я отказался от затеи с изучением CI и правкой ядра ибо чревато лишними «головными болями».
  3. Слабая документированность разработки. Очень часто приходилось лезть в ядро движка (чтобы понять что за функции вызываются из стандартного шаблона) и разбираться с логикой работы функции. С одной стороны я доволен, что многое узнал, но с другой стороны, был бы рад избежать узнавания многих специфичных знаний, которые скорее всего забудутся очень скоро и которые проще каждый раз при необходимости смотреть в актуализируемом справочнике.

В заключение хотелось бы сказать что-то более конкретное и практически полезное: в движке есть замечательная стандартная функция mso_load_jquery, которая контролирует «одноразовость» подключения в HEAD область страниц библиотеки jquery и её модулей. При разработке своего модуля возник вопрос, а почему нельзя было сделать «обезличенный» механизм контроля так, чтобы можно было контролировать подключение не только jquery, но и любых других js модулей и css файлов? В качестве временного (пока Максим не реализует что-то подходящее) совета разработчикам плагинов для maxSite CMS могу предложить использовать в функциях плагинов следующий код (с необходимыми правками):

global $MSO;
$path = getinfo('plugins_url') . 'your_module';
$jsfile = 'your_module.css';
if ( !isset($MSO->js['jquery'][$jsfile]) ){ // есть ли включение нужного файла?
	$MSO->js['jquery'][$jsfile] = '1';
	echo '<link rel="stylesheet" href="$path/css/$jsfile" type="text/css" media="screen">'.NR;
}

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