Maksym Prokopov personal blog
Idea is a something worth sharing

Блеск и нищета OpenCart как движка для интернет-магазина

13.10.2016

Reading time: 5 min.

Это продолжение серии статей «Как я запускал интернет-магазин«. Часть 1 (Аналитика спроса перед запуском). Часть 2 (Выбор движка для интернет-магазина).

opencart1-500x500

А еще я в некотором роде разработчик. Для меня HTML, CSS, JS не пустые аббревиатуры, в 1999 году я сделал первый PHP+MySQL сайт за деньги. Сейчас у меня другое занятие, которое приносит деньги, но хотелось окунуться в чудесный мир e-commerce за небольшие деньги и сжатые сроки. По опросам знакомых веб-студий я сошелся на мнении, что нужно ставить OpenCart. Модулей ведь много, на все случаи жизни практически. Да и в базе движок выглядит достаточно приличным. И мой давний приятель, у которого довольно раскрученный магазин с хорошим трафиком, сказал «только Opencart есть движок с православно правильной архитектурой».

Ну, думаю, буду экономить свое дорогое время разработчика, буду покупать модули, это же дешевле стоимости часов разработчика. Забегая вперед, в итоге пришлось мне тратить ОЧЕНЬ МНОГО своего времени разработчика после установки модулей чтобы их просто подружить друг с другом да и просто устранить проблемы, не говоря уже о том, что многие модули работают мягко говоря не так, как ожидалось. А некоторые модули вообще оказались несовместимыми друг с другом 🙁 .

Итак, закатал я рукава и полез по колено в OpenCart, думал, всего-то, установить пару модулей и вперед к вершинам электронной коммерции и маркетинга.

Первым делом нужно выбрать нужную шкурку. Ну ок, магазин ведь ручного инструмента, поэтому поехали искать по ключевому слову «Tools». И вот она, черная тема в зеленой палитре на вьетнамском сайте. Купил за $25. Ставлю. И сразу же — оппа! Оказалось, что при достаточно большом описании категории оно неправильно позиционируется и текст прячется под фиксированным размером «бокса» ну и много всего по мелочи. Ушел редактировать стили темы, разбираться что где хранится, какова структура. Так что «сели и поехали» это скорее всего не про нас.

Открытие №1. Выяснилось, что модули любят ПЕРЕЗАТИРАТЬ код движка. Это значит, однажды установив подобный модуль вы лишитесь совместимости с новыми версиями OpenCart. Для решения этой проблемы придумали систему VQMOD или же ее реинкарнацию OPMOD, механизм, который стал частью Opencart. Суть ее в том, чтобы описывать изменения кода в специальном формате в файле XML, который потом достаточно загрузить через FTP или встроенный механизм загрузки и у вас будет установленный модуль. То есть сам функционал модуля описывается текстом, который нужно найти через Regexp в исходном файле и кодом, который нужно добавить или заменить в нужном месте. Таким образом выполняется эдакая прекомпиляция модулей в итоговый файл, который затем хранится где-то в кеше. Нужно ли говорить, c какой болью выходит отладка модуля? А взаимодействие одного модуля с другим?

Впрочем, вы и так не сможете без крови и соплей переехать на новую версию OpenCart потому что разработчики НЕ ЗАБОТЯТСЯ ОБ ОБРАТНОЙ СОВМЕСТИМОСТИ. То есть так и сказали, релиз OpenCart 2.2 не используйте, что-то он вышел у нас слишком сырым.

Открытие №2. Модулей ОЧЕНЬ много, и из модулей нужно уметь ВЫБИРАТЬ, потому что количество модулей только интеграции с Новой Почтой много-много. Вот, например, простыня статьи с выбором из ШЕСТИ модулей которые делают примерно одно и то же. Так я приобрел модуль Microformats Pro, функционал которого в последствии был продублирован функционалом модуля CompleteSEO. И теперь мне не очень понятно, не случится ли что-то с поисковой выдачей, если я выключу модуль Microformats Pro и перейду на поддержку микроформатов через CompleteSEO и полная ли в CompleteSEO поддержка этих самых микроформатов.

Открытие №3. Разнообразная (хорошая и не очень) техподдержка модулей.

Я купил модуль для интеграции с Google Tag Manager, который сразу же (!) не смог установиться на Opencart 2.1.0.1. Индус-разработчик по началу никак не реагировал на запросы, и только после запроса на возврат денег сразу же отписался и признал проблему с установкой, выпустил обновление.

Ведь у Opencart Store нет механизма попробовать модуль перед использованием, то есть я должен его купить и после этого, если возникнут какие-то проблемы, требовать возврата денег.

Открытие №4. Модули бывают несовместимыми.

Например, есть модуль, который собирает все шаги заказа на одной странице, чтобы не проводить покупателя через 6 страниц-шагов проведения заказа на одной странице и выполняет сам заказ при помощи AJAX. И это правильно и хорошо, но делает модуль Google Tag Manager чуть менее чем полностью бесполезным, поскольку перестает считать сумму заказа в аналитике Google Analytics через механизм dataLayer, поскольку сам механизм заказа стал работать по-другому. И здесь без программиста тоже уже никак не обойтись.

Открытие №5. К работе с SSL готов? Не совсем.

Скорее всего вы слышали, что сайты с SSL гугл любит больше, чем сайты без поддержки SSL, да и в Opencart это должно поддерживаться «одной галкой», но нет, не все так просто. Механизм админки перестает корректно работать с заказами, поскольку он делает AJAX запрос к API из HTTPS на HTTP, а это уже небезопасная операция, что также отобрало на отладку порядочно моего времени.

Мультимагазин. Хм. У нас есть отдельная категория товаров, таких как уровни и нивелиры, и хорошей идеей было запустить интернет-магазин отдельно, с отдельным дизайном. И да, сделать это оказалось просто и легко, с той же «шкуркой», по тем же правилам обработки заказов и единой базой клиентов. Но вот незадача, нет способа прикрутить Google Analytics к отдельному магазину. Да, вот так.

Фильтры. Это такая штука, которая нужна, пожалуй, каждому магазину. Это когда помимо категорий товары хорошо бы показывать «для мужчин», «для женщин», «для детей», «для строителей», «для детей строителей» и так далее. Очень полезно с точки зрения удобства использования. Внутренним функционалом OpenCart они представлены не очень хорошо, и следует использовать сторонний плагин типа MegaFilter. Но к этому плагину мне делать подход пока страшно O_o.

Резюме. Не смотря на то, что в базовой поставке Opencart достаточно неплох, я все еще не представляю, как быть с обновлениями версий движка магазина и что делать с несовместимостью модулей и как влиять на поставщиков модулей и их качество. Использовать OpenCart как есть, без каких-либо модулей не представляется возможным. Мы же хотим и различные оплаты принимать и доставки и гибко управлять SEO настройками, а это неизбежно потребует от нас влезания в ад модулей и поиска ответов на различных форумах и группах вконтакта.

Я много раз хотел переписать магазин на Ruby on Rails, с которым у меня много давней дружбы, но я вовремя каждый раз себя останавливал, я очень хорошо понимаю, что такое ввязаться в собственную разработку. Если я не собираюсь торговать интернет-магазинами, то не нужно делать еще один движок, как бы ни чесались руки.

Сейчас присматриваюсь к одной платформе для интернет-магазинов, о которой расскажу попозже, возможно, все перечисленные мной проблемы отпадут сами собой. Будем посмотреть.