[Из песочницы] Несколько слов о движке интернет-магазинов OpenCart

Предыстория За всё то время, что я занимаюсь веб-разработкой, как-то не возникало необходимости написать, наверное, чуть ли не самый распространённый вариант заказов на биржах фриланса — интернет-магазин. К такой потребности пришёл только, собственно, с уходом во фриланс. Передо мной встал извечный вопрос — какой же движок выбрать. Довольно долго шерстил сеть, встречал различные комментарии, обзоры, сравнения на этот счёт, наконец плюнул и взял одно из довольно популярных, хотя часто не замечаемых в угоду более известных и навороченных конкурентов, решение — OpenCart. Взял и не пожалел. Обычно я жутко не люблю и не перевариваю различные ширпотребные CMS, но OpenCart оказался исключением. Не думаю, что моё описание будет сильно полезно профессионалам — мини-анализ рассчитан скорее на тех, кто точно так же пытается определиться, на чём писать, или кто просто ещё не пробовал.История Итак, расскажу вначале о том, что больше всего понравилось в движке.1. Самый большой, жирный плюс: хорошая, вменяемая реализация MVC. Такой нет у Wordpress, Joomla, Drupal в принципе. Дальше боюсь соврать (поправьте, если что), но по-моему нет даже у Magento и Prestashop. Да-да, сейчас меня закидают, мол, нафига козе баян. Нужен, товарищи. Адекватная система разделения шаблона, контроллера и логики работы с данными — это залог успеха, удобства наращивания функционала на вашем проекте и вообще. Как говорится, если вы не любите кошек, вы просто не умеете их готовить. При этом у вас в папке с отображениями может лежать несколько шаблонов дизайна с возможностью выбора нужного в админке.

2. Удобная админка — ничего лишнего, но всё, что надо, есть. Вам не придётся вставлять css и шаблоны через админку (кто это придумал вообще, прекращайте курить). Не в последнюю очередь благодаря вещам из п.1 любой раздел можно крутить-вертеть-кастомить лёгким движением редактора (ну давай, расскажи мне, как ты кастомил админку в Wordpress). Есть и легко прикручиваются/откручиваются фильтры и валидаторы по любым полям. Как следствие, не нужны даже сообщества — движок фактически является фреймворком в классических традициях с примерами для самого себя. К слову, сообщество у OpenCart довольно-таки немаленькое, так что единомышленников в случае чего будет найти вполне реально.

3. Из коробки есть ЧПУ (даже для вордпресса для этого нужно ставить расширение). Но если вы их не используете — то проект не заморочен тонной излишних реврайтов для работы базового функционала. Не знаю, кому как, но мне было приятно — всё же легче осваивать новый инструмент, когда логика путей прозрачна.

4. Заточенность под магазин делает доступными из коробки много нужных везде вещей: регистрация и личный кабинет, сложные формы с валидациями (для оформления заказа), фильтры и сортировку, отзывы, и т.д. Да, всё это есть из коробки или в модулях и для того же Yii, как и для любого другого фреймворка, но подкупает, когда всё уже реализовано, только чуть подпили напильником.

5. Приятная мелочь, важный момент для владельцев магазинов — много разных статусов заказа, и легко добавить новый.Итого — хороший, быстрый движок, фактически являющийся гибридом классического фреймворка и классической CMS.

А теперь немного о минусах, которые пока что удалось заметить.

1. При хорошей классической MVC отсутствует какая-либо вменяемая реализация модели. Слои абстракции, ActiveRecord — это всё далеко от Опенкарта. Модели содержат простые запросы вида $this→db→query («SELECT * FROM customer»).

2. Как бы не было много всего нужного в существующей начинке, в самый неподходящий момент оказывается, что чего-то критичного нет. Например, функции «обратный звонок». Или активация почты с помощью кода. И прочих мелочей, которые в принципе не так-то и сложно сделать, но погрязаешь в доработках, хотя кажется, что движок-то должен это уметь сам. Существует довольно много различных модулей для него (включая вышеописанные), но почти все из них платные, хотя цены обычно и не выходят из предела $10. Впрочем, я написал это сам, и теперь у меня этот функционал будет на последующие случаи.

3. Проблема, о которой писали на Тостере: движок сохраняет язык в cookies и не передаёт в ссылке, что ведёт к проблемам при обмене ссылками и создаёт помехи для SEO.

4. Процесс покупки довольно жёстко предопределён, при этом содержит много лишнего. Например, из коробки при оформлении заказа без регистрации у пользователя спросят адрес трижды: просто адрес, адрес доставки и платёжный адрес. Из трёх магазинов мне во всех трёх это пришлось убирать руками в куче мест. Другой пример — обязательное поле «модель» при создании товара. Ну нет у человека модели, бывает такое — приходится тоже руками убирать. Т.е., обобщая данный пункт — если вам надо выпилить что-то лишнее или добавить что-то новое, приходится делать очень много телодвижений в большом количестве мест кода.

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

Спасибо за внимание.

© Habrahabr.ru