Pull to refresh

Практический опыт разработки интернет-магазина на OpenCart

Website development *
В ноябре 2009 года я познакомился с www.opencart.com и остался очень доволен этой CMS построенной с соблюдением основных принципов MVC. Это просто замечательная система код которой можно легко адаптировать под собственные нужды. Файлы системы разделены по папкам controller, model, view, language.
image
Гениально и просто. Настолько просто, что я за считанные часы понял как работает система и уже смог адаптировать несколько файлов контроллеров под свои нужды. Как CMS эту систему лучше не рассматривать в принципе! Все очень скудно и печально. Но площадка для коммерческой деятельности очень приличная. Главный лозунг сайта интернет-магазин с минимальными усилиями при разработке.

Важным для меня преимуществом является высокая скорость генерации страницы. Простой код с разделением на модель, вью, контроллер. Шаблоны дизайна лежат в папках с понятной структурой. Простая система по сравнению с magento commerce в которой что-то поменять ну очень не просто.

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


Достаточно легко вносить изменения в код

Вот например, видите блок с рыночной ценой и экономией при покупке на этой странице: www.toolsonline.ru/toolsets/allinone/nab.14.12.116 он выводится только для товаров бренда станкоимпорт. Чтобы сделать этот блок потребовалось добавить некоторые переменные в файл контроллера отвечающего за формирования карточки товара. Не скажу, что это ну очень юзабильно и мне да мне потребовалось изменять PHP файлы по FTP. Но логика настолько прозрачная, что я уверен в том, что в будущем не запутаюсь в том, что уже сделал или потом сделаю. Блок выводится только для одного конкретного производителя. Логика находится в отдельном файле контроллера. Представление блока в файле шаблона дизайна, где PHP и HTML в перемешку. Шаблонизация в opencart примитивнейшая из возможных, но в этом есть своя сила! Которую понимаешь после того, как поработаешь с чужими шаблонами дизайна на xslt. Я добавил изменения в два php файла и получил нужный мне результат.

Выгрузка в Яндекс.Маркет за 3 дня


Я написал код для выгрузки товаров интернет магазина в формат Yandex ML. Это очень просто сделать на основе имеющегося в системе файла для экспорта товаров в формат Google Base. Это на самом деле просто сделать.
Очень много интересных аспектов этого формата открылось мне при согласовании параметров выгрузки с менеджером Яндекс.Маркета прежде чем он одобрил окончательный вариант я вносил изменения в выгрузку 4 раза. Очень помогла админка Яндекс.Маркета, где можно проверить валидность выгрузки. Яндексоиды хорошо сделали эту утилиту проверки файла. Я реализовал задачу по интеграции интернет-магазина в Яндекс.Маркет всего за 3 дня и очень этим гордился следующие 3 дня =) Причем я реализовал модель vendor.model и сдела так, что в админке можно выбирать минимальную цену товаров начиная с которой товары выгружаются в файл.

Для тех кто не знает как именно происходит выгрузка:
Товары автоматически выгружаются в YML файле на Яндекс.Маркет. Файл загружается, обрабатывается и публикуется приблизительно через каждые 5 часов. Яндекс.Маркет опрашивает случайным образом ссылки на товары сайта с периодичностью в 1 минуту. Если сайт недоступен, то он снимается с публикации автоматически. По этому, если вы будете кликать по товарам в поиске Яндекс.Маркета, то каждый клик будет стоить владельцу сайта не менее 3 рублей. Глупость формата YML заключаются в том, что XML принимается только в windows-1251, а не в UTF-8. Не поддерживается львиная доля HTML Entity. Причина такой странной поддержки мне непонятна.

Работа с изображениями


Посмотрите на дополнительные картинки в описании товара: www.toolsonline.ru/toolsets/allinone/nab.14.12.105 они выводятся в 275х275 пикс. Клик по картике открывает картинку в размере 800х800 поверх картинки выводится водный знак. Масштабирование изображений, наложение защитного watermark'a в OpenCart встроено по умолчанию. Надо лишь разобраться где лежит нужная библиотека генерирующая изображения требуемого размера и добавить несколько строчек кода в библиотеку вывода изображения. Вывод ватермарка реализован, но его надо включать в одном из методов хелпера в PHP файле.

У товара не может быть полей для отдельных свойств и как следствие не реализовать в принципе фильтры по свойствам, как в Virtuemart и других движках, но там очень приятный и простой WYSIWYG (не знаю как называется), можно добавлять неограниченное количество доп. картинок для товара. Очень много встроенных средств для управления ценой товара. Можно добавлять опции, которые влияют на итоговую цену. Каждый товар можно поместить одновременно в несколько разделов каталога.

Проблемы с ЧПУ


У этой CMS есть ряд недостатков, которые обязательно требуется исправить! Очень много ошибок с ЧПУ, я так понимаю, что эта возможность появилась начиная с версии 1.3.x и ещё не отлажена. Один товар можно смотреть так seo-url от корня сайта www.toolsonline.ru/cs-tk56pmq или в структуре каталога: www.toolsonline.ru/toolsets/unisets/cs-tk56pmq т.е. несколько путей до одного и того же товара, что по моему мнению не есть гуд. Общее количество страниц больше, но вес каждой страницы с точки зрения поисковика должен быть меньше, т.к. у них одинаковый контент отдается. Кроме варианта SEO ссылок параллельно действуют ссылки с параметрами, что тоже напрягает. Вот ссылка www.toolsonline.ru/index.php?route=information/contact и красивую ссылку /contacts/ сделать у меня простым способом не получилось.

Проблема с кодом 404


Вторая важная проблема в том, что Daniel архитектор этой самой CMS принципиально не отдает ошибку 404 для несуществующих страниц т.е. текст «страница не найдена» будет выведен, но для страницы будет передан код HTTP 200 OK. Поисковик будет думать, что страница существует, а это не так. Шлак из индекса поисковика удаляться не будет. Эту проблему я решил, но удивлен почему нет решения в сообществе Opencart на официальном сайте forum.opencart.com. Я там есть под своим обычным ником jfima и уже запостил туда пару своих решений для этой и других проблем. Я бы сказал, что сообщество молодое и неокрепшее и народу мудрого там мало.

Итог


В общем OpenCart хорошо подходит для интернет-коммерции, если ориентироваться на вариант с минимальными вложениями усилий в разработку. Моего уровня хватает, чтобы дописать что-то для этой CMS своими силами, а это значит, что многим фрилансерам эта система окажется доступной. Простой фреймворк, который можно легко настроить под нужды проекта.
Tags:
Hubs:
Total votes 48: ↑40 and ↓8 +32
Views 119K
Comments 49
Comments Comments 49

Posts