Закончена новая версия магазина orimex-shop.ru на Yii2

К Новому году была запущена новая версия интернет-магазина «Оримэкс».
Первая версия магазина была разработана мною на CMS Joomla 2.5 (последней версией системы на то время) c использованием компонента VirtueMart 2 (тоже последняя и немного сыроватая версия, как выяснилось позже).
Магазин со временем оброс различным функционалом, таким как выбор тонировок и тканей, просмотр товаров в 3D и пр. Для некоторых функций пришлось править ядро компонента VirtueMart, что «не есть хорошо». К сожалению, Joomla и VirtueMart годятся только для шаблонных решений, если мы, к примеру, захотим изменить процедуру оформления заказа, убрать лишние шаги, добавить/удалить какое-то поле и пр., то это зачастую возможно только изменением кода VirtueMart и использованием каких-либо костылей или грязных хаков. Все это привело к тому, что сайт стал производить невероятное число SQL-запросов, и хостер периодически переставал справляться с нагрузкой и сайт тормозил, а иногда и вовсе был недоступен. Немного спасало положение включение кэширования, но это все-равно неверный путь, это затрудняет разработку и отладку сайта.
В 3 версии Joomla многое изменено в лучшую сторону, новая MVC-архитектура, более четкое разделение логики от представления, использование моего любимого фреймворка Bootstrap. Но все же Joomla по-прежнему производит впечатление огромного и неповоротливого кухонного комбайна, шаблонности и топорности. А сделав чистую установку последнего релиза VirtueMart 3 на чистую же Joomla 3, я словил несколько исключений, и кучу посыпавшихся мелких багов, желание разбираться с которыми совершенно не было — это была чистая установка, а что было бы потом при разработке.
Поэтому было принято решение не обновлять все прежнее «хозяйство», а разработать совершенно новый интернет магазин с современным дизайном и адаптацией под мобильные устройства.

Картинка для привлечения внимания
Картинка для привлечения внимания


Для этих целей был выбран один из самых современных и быстрых PHP-фреймворков — Yii2. Это как глоток свежего воздуха после Joomla, полный контроль над тем, что происходит при каждом запросе, совершенно ничего лишнего, можно сосредоточиться на решении конкретных задач. В результате высокая производительность на обычном shared хостинге, на среднем тарифе, даже без кэширования (хотя и это есть в планах на максимум). Дополнительно были реализованы вывод фида товаров для Google Merchant в формате TXT, YML (Yandex Market Language) и бонусом XML Sitemap. А также возможность редактировать в визуальном редакторе письма уведомлений о заказе, менеджер тканей и тонировок и пр.
Из минусов выбора этого нового решения — это перенос всех наработок из прежней версии, реализация административной части, и всего того, что идет в CMS и VM из коробки, ведь Yii — это только фреймворк. Соответственно, дополнительные затраты сил и времени на привычные для CMS вещи — плата за гибкость и производительность, но с другой стороны мы реализовываем, только то, что действительно необходимо и реально задействуется на сайте, а не тянется за собой мертвым грузом и не перегружает интерфейс. Несколько разделов в админке — «Товары», «Заказы», «Отчеты», «Страницы» и «Настройки» — это все что нужно для этого проекта, и никаких «Налогов», «Валют», «Производителей», «Отзывов и рейтингов» и еще 100500 совершенно ненужных (в данном проекте) функций и настроек VM.
Так что такое решение (Yii) подходит для уже зрелых проектов, которые столкнулись с проблемами падения производительности и излишней перегруженностью.

Yii — это катана, изящный и острый японский меч, а Joomla (и др. CMS) это складной многофункциональный нож; в бою катана не оставит шансов противнику, но «складишком» удобнее открыть бутылку пива или консервную банку 🙂

Для новых небольших и средних магазинов, для «быстрого старта» при ограниченном бюджете, как замену Joomla и VirtueMart, я рекомендую CMS WordPress и плагин WooCommerce, это простое неперегруженное решение с приятным интерфейсом из коробки, которое очень хорошо кастомизируется путем изменения темы или с помощью принятого в WP механизма хуков, который позволяет практически полностью переопределять поведение системы. В ближайшее время напишу об этом плагине подробнее и опубликую кое-какие полезные сниппеты.

Так же, в следующих постах, расскажу технические подробности о том, как удалось разогнать проект на Yii2 в тесте Google PageSpeed Insights, провести клиентскую оптимизацию.