Pull to refresh

Ronny CMS, введение

Reading time 4 min
Views 1.4K

Когда деревья были маленькими


Начну издалека — с истории. Когда-то давно был PHPNuke. От этой CMS форкнулся XOOPS.
Когда разработчики XOOPS решили перейти на тогда еще молодой и малоизвестный шаблонизатор Smarty — случился еще один форк, и часть команды ушла делать свою CMS, без блэкджека — e-xoops, сохранившую Native PHP.

Где-то в 2004 году автор пришел в русскую команду e-xoops. Пришел случайно, не планируя оставаться надолго. Быстренько сделал пару сайтов на этой CMS. Внес пару хаков. Вместе со всеми следил за эволюцией и переименованием системы в RunCMS.

Вскоре очередной клиент потребовал очередной интернет-магазин. К тому времени сложилась интересная ситуация — я с напарником bigazzzz хорошо знали изнутри RunCMS, многое в ней нравилось (а многое — нет), но магазины, если возникала нужда, строили на сторонних решениях (osCommerce и прочий ад...) Время было, опыт тоже, желания — выше крыши, поэтому решили на базе RunCMS создать свой магазин, в виде модуля для CMS.

Сначала он был простеньким, но с каждым новым сайтом, следуя за пожеланиями заказчиков развивался. Ко второй версии он по объему кода превзошел саму CMS, по функционалу — многих аналогов и получил собственное имя — RunSTORE.

Шли годы, развивался RunSTORE, развивалась и RunCMS, в которую мы тоже старались вносить усовершенствования. Однако случилось странное — зарубежным «владельцам» CMS не понравилось то, что большую часть кода в ней пишут русские разработчики (а главным постепенно стал MichaelXIII). В один прекрасный день «владелец» закрыл репозиторий, уничтожил всю базу кода и выгнал всех разработчиков, заявив, что откатывается на предыдущую версию.

А мы к тому времени успешно продали RunSTORE. Новый владелец строил планов громадьё, но что-то у него не задалось. Результат — нет ни RunSTORE, ни RunCMS, и заняться нечем* -)) А писать хотелось…
*- шутка, заняться всегда есть чем, но хочется ведь и для души что-то сделать...

Так родился форк от RunCMS под названием Ronny CMS.
Да, это тот же Nuke/xoops/Runcms, но наверное, самый современный и цельный из всех имеющихся. А может и нет -))

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

На данный момент Ronny имеет статус Release Candidat и отошла от точки форка почти на 800 ревизий.

Что сделано?


Ооо, сделано многое. Конечно, во многом наша CMS еще похожа на RunCMS — те же модули, те же блоки. Но, оставив лучшее и то, что лучше было не трогать, мы очень многое изменили.

Давайте я вкратце расскажу — что же именно.
  1. Шаблоны и темы.
    Да, это была беда. Изначально по историческим причинам в RunCMS вообще не было шаблонизатора. Был спагетти-код, в котором мешались кони, люди, HTML, CSS, PHP и JavaScript в одном флаконе. Конечно, такое терпеть было нельзя.
    В результате мы взяли шаблонизатор из проекта RunSTORE, немного его доработали, отпрофилировали, и сделали основным в Ronny CMS. Шаблонизатор прост до безобразия, он почти ничего не умеет — разве что выводить переменные, простейшие циклы и условия, но весьма быстр, компилируется в php-код и умеет этот код кэшировать.
    Если в дальнейшей потребуется расширить его функционал — сделаем, но пока что этого не нужно. Здоровый примитивизм еще никому не мешал.
  2. Деревья.
    Беда? Нееет, это была не беда, это был тихий ужас… Рекурсивные запросы к базе для получения структуры дерева — стиль PHP3 в полной красе.
    Пришлось сделать свой класс для обработки деревьев.
    Заодно от него же легко отпочковался класс для комментариев, ведь комментарии — это те же деревья. Введение этого класса и единой таблицы комментариев позволило прикреплять их к любому модулю и любому объекту.
  3. Human URLs.
    Применение mod_rewrite стало обязательным во всех частях и модулях системы. URL-ы должны выглядеть человек-читаемо или, по крайней мере — приятно на взгляд.
  4. Теги.
    Одно из самых значительных нововведений по сравнению с RunCMS. Отныне любой объект в любом модуле может быть снабжен произвольными тегами, а система обеспечивает вывод облака тегов и поиск по тегам.
  5. Модули.
    Часть модулей старой RunCMS пришлось просто выкинуть, посколько переписывать и адаптировать их было слишком долго, достаточно сказать, что почти все старые модули полагались на «register_globals On».
    Взамен у нас появился ряд новых модулей, написанных с нуля специально для Ronny CMS — Аккаунты, Блоги, Фотогалерея, Объявления, Карты, Страницы, Ленты новостей, Контакт. Те модули, которые было решено оставить — Новости, FAQ, Личные сообщения, Голосования — подверглись значительной переделке.
  6. Расширения.
    Взамен монолитного кода RunCMS в Ronny появилась система расширений (extensions) — заменяемых частей. Сейчас через расширения реализованы визуальные редакторы (готовы интеграции для spaw и fckeditor) и капчи (kcaptcha и w3captcha). В дальнейшей это дает возможность использовать любые редакторы, капчи, файловые менеджеры и прочее, на что хватит богатой фантазии разработчиков и заинтересованных пользователей.
  7. И многое другое
    Конечно, в одной вводной статье не получится описать все различия и преимущества новой CMS. Однако основная цель уже достигнута — у нас 9 запросов на главной странице по сравнению с 24 у RunCMS и вдвое меньше время генерации сравнимых страниц.

И что дальше?


А дальше перспективы радужные. На сейчас мы объявили стабилизацию кода — ничего нового не вносится, идет планомерное устранение ошибок и подготовка к релизу. Ошибок пока еще много, код представляет собой адскую смесь из нового и старого.

Релиз сборки Core (это ядро системы и модуль страниц) намечен сразу же после Нового года, затем постепенно подтянем отстающие пока модули и выпустим и остальные пакеты.

А тем временем уже есть планы на Ronny CMS 2.

А можно посмотреть?


Конечно! Весь код, кроме коммерческих модулей ( а на сейчас это только Объявления) доступен по лицензии GPL v2. На сайте www.ronny-cms.ru можно почитать свежие новости и скачать последнюю сборку — слепок репозитория. Пусть сайт еще не полностью готов (большая часть времени уходит на написание кода и устранение багов, а не на украшательства), но составить впечатление о Ronny уже можно.

P.S. Если кому-то будет интересно, в дальнейших статьях я продолжу рассказ о Ronny, но уже с примерами кода и подробными комментариями.

UPD
Совсем забыл, ведь было бы неплохо сразу дать и примеры сайтов на Ronny CMS (кроме сайта самой CMS, конечно же):
Отраслевой журнал «Валютный спекулянт»
Комитет по делам молодежи Костромской области
уже обсуждавшийся здесь СендПост

UPD2
Очень прошу тех, кто ставит минусы — пояснять, что именно не понравилось. А то создается впечатление, что «просто не понравилось и все», а что именно? Код? Стиль поста? Я ведь пойму, если объясните. Спасибо.
Tags:
Hubs:
+31
Comments 75
Comments Comments 75

Articles