Раз эта тема немного устарела из-за появления
@BitbucketBot, то позволю себе немного рассказать о том, что происходит.
Как-то раз
@aNNiMON заметил, что мы, как разработчики сайта, не очень-то и стремимся реализовывать всякие классные фичи. И на это есть две причины.
Первая из них это старый неподдерживаемый движок. Прошло уже 5 лет с тех пор, как он впервые был сюда установлен, и ни разу не было никаких апгрейдов. И не могло быть, автор JohnCMS сделал свою систему монолитной, плохорасширяемой, да и быдлокод там конкретный. Вы и сами это знаете, я регулярно кидаю в нашу конфу vk куски кода с тегом
#stupid_kode. Поэтому в определённый момент было принято решение сделать с нуля новый движок, который бы удовлетворял нас в полной мере.
И это вторая из причин. Пребывая в ожидании того самого светлого будущего, не представляется возможным менять что-то сейчас. Объясню, прошлой зимой мы занимались только тем, что фиксили баги в этом движке, а разработкой нового занимался только
@web_demon. Ничего
нового в этот движок добавлять мы не хотели — у нас ведь будет
новый, более совершенный. А этот умрёт.
С одной стороны, разрабатывать продукт в одиночку трудно и долго. Нужно много времени, большой опыт, и всё такое. На
@web_demon'a упало очень много задач: разработать backend, придумать дизайн, сверстать его, реализовать frontend, и т.д. Это очень трудно. А ведь есть личная жизнь, хобби, да и в конце концов он
не обязан. С другой стороны, грустно расставаться с этим сайтом, с этим голубеньким дизайном, этим интерфейсом, навевающим о две тысячи седьмом...
Поэтому я решил, что нужны постепенные изменения. Мы будем плавно его улучшать и даже интегрируем сюда новый двиг. По сути старый JohnCMS ничего особенного из себя не представляет — это лишь небольшой костяк из так называемого "ядра", пользовательских страниц, и модулей сайта. Там нет никакой жёсткой структуры, он не framework-based, и в общем-то его можно легко модифицировать. Какие проблемы есть сейчас:
• Нет роутинга. Если вы читали
недавнюю статью, то могли понять, что при наличии роутинга в приложении, все запросы идут в один файл — index.php, который уже каждому URL ставит в соответствие некоторую функцию, грубо говоря, функциональность. Это сразу обеспечивает гибкость, потому что инициализация системы происходит также в index.php. В джоне всё плохо, роутинг обеспечивается структурой файловой системы, система инициализируется в каждом файле.
• Отсутствие намёка на какое-нибудь MVC. Там всё просто, среднестатистический файл выглядит как-то так:
подключить ядро
подключить шапку сайта
мешанина из SQL, PHP, HTML и иногда CSS
подкючить футер сайта
В итоге ты не можешь начать пользовать ООП, только структурное программирование с процедурами. Ни о каких шаблонизаторах, ни о каких контроллерах и моделях никто в этом двиге не знает. Там лишь есть код типа
echo wfrm(); и копипаста web_demon'a.
• Насчёт шаблонизатора я соврал. Есть один самопальный и малофункциональный. Очень напоминает сам PHP (он тоже создавался как шаблонизатор), но писать на нём — сущий кошмар. Количество кода не уменьшается, а только растёт. Я взял twig, постепенно перевожу страницы на него. Мне нравится. Плюс шаблонов в том, что мы можем отдать их верстальщикам / дизайнерам, и сказать "Творите!". И никто не будет читать этот ужасный код на PHP.
• Отсутствие API, низкое качество кода, отсутсвие современных технологий (привет процессоры CSS, react, redux, системы сборки), отсутствие тестирования, и прочие моменты.
В любом случае, это всё исправимо, так что ближайшее время я буду заниматься этими проблемами. Скоро мне понадобится помощь, так что думаю, вы не откажете и подойдёте со своим творческим подходом.
Хочу поблагодарить
@RGT, что согласился помочь. Ждём, когда можно будет приступить к проектированию тач-версии!