Импорт в OpenCart

Введение

Мы уже писали про наполнение в opencart. Та статья была про ручное наполнение. Стоит отметить, что наполнять вручную opencart очень даже удобно. Интерфейс работает достаточно быстро. Даже очень быстро. Есть с чем сравнить. Один минус, который все-таки стоит заметить, что при нажатии на кнопку сохранить интерфейс перебрасывает сразу на категорию с товарами в админке. Не знаю, как вам, а лично мне такое не очень нравится, потому что я люблю частенько понажимать на “Сохранить”.

Что-то я отвлекся от основной темы статьи и продолжу историю о том, как мы делали наполнение opencart товарами с комбинациями. Если вы знакомы с нашими работами, то наверное, знаете что модуль импорт в opencart у нас разработан был давно и мы активно им пользуемcя на проектах при выполнении задач клиентов.

Видео

Задача

И вот как-то к нам пришел клиент, которых захотел несколько странное для opencart. Клиент захотел импортировать товары с модификациями в свой opencart. Хочу сказать, что странной эта задача является именно для opencart, а не для любой другой CMS. Почему странное желание спросите вы? Потому что модификации работают в opencart мягко говоря очень слабенько. А именно не пересчитывается цена товаров, нельзя назначить картинку на выбранную опцию. Нельзя выставить значения опций по умолчанию. Как вы поняли, с такими исходными данными opencart надо очень хорошо постараться, чтобы обеспечить нормальную работу витрины интернет-магазина.

opencart_import_exapmle

На картинке показано, то как нуно было отобразить товар. Интерактивности нет, но можно представить, что от того выбора, который делает пользователь изменяя опции товара меняются картинки.

Модули

В общем, к чему мы пришли. Решили, что все вот эти требования нужны и мы будем решать задачу так как и планировали изначально. И решили, что хотелки будем делать через модули. Хорошо, что мы не первые кому это все надо делать и уже были ребята, которые имели модули.

Выбрали следующее:

  • Модуль «Изображения опций PRO для OpenCart1.5» - для привязки к опциям картинок.
  • Модуль «Опции по умолчанию» - для определения значений опций по умолчанию на карточке товаров.

Модули купили и установили. Убедились, что все работает так как надо. Теперь после того как opencart стал похож на добротный магазин с точки зрения опций, надо было обеспечить импорт товаров в него и наполнить хотя бы первый раз. В требованиях стояла задача постоянно обновлять opencart, т.е. ежедневно.

 

На следующей картинки показано то как модули отобразились в админке:

opencart_options_with_images

opencart_options_default

Процесс разработки

В первой фазе решили, что все-таки достаточно будет единоразового наполнения, а потом перейдем к ежедневному наполнению. Нам пришлось дорабатывать наш модуль импорта. Т.е. теперь наш модуль импорта умеет импортировать картинки к опциям! Это очень хорошее дополнение к нему. И еще у модификаций он умеет выставлять значения опций по умолчанию.

После того как мы проверили, что первый раз наполнение отработало хорошо м стали тестировать модуль импорта на “повторные” обновления данных в базе.

Кое-что было доработано и мы уже через два дня получили готовое решение для нашего счастливого клиента. Он получил полезный инструмент для ежедневной работы в интернет-магазине. И это не удивительно. Ведь программа копирует к нему 12 тысяч товаров с модификациями. Совокупное количество картинок превышает 120 тысяч, а количество модификаций превышает 70 тысяч.

 

Структура таблиц

Давайте рассмотрим структуру таблиц, которое пришлось “обрабатывать” в ходе нашей работы.

все-то четыре таблицы присутствует в активном использовании этих двух плагинов.

Модуль «Изображения опций PRO для OpenCart1.5» использует три таблицы:

  • oc_poip_main_option_settings
  • oc_poip_option_image
  • oc_poip_option_settings

opencart_tables

Сразу скажу, что смысл таблиц oc_poip_main_option_settings и  oc_poip_option_settings так не был определен. Талицы оставались всегда пустыми и поэтому и не заполнялись во время работы модуля импорта. Толи эти таблицы остались от “старого” кода плагина, толи просто не используются, толи в них делается какая-то магия, которая доступна в других версиях плагина.

А вот таблица oc_poip_option_image - это основная “лошадка” для нашей задачи.

Вот все поля этой таблицы:

  • product_id
  • product_option_id
  • product_option_value_id
  • image
  • sort_order

opencart_main_table

Именно в нее надо было загрузить данные, но привязав картинки к конкретным опциям. Картинки хранятся в этой таблице аналогично, как и в самом opencart, поэтому особых сложностей не возникало. Правда, долго не мог понять какое поле надо было записать в

в поле product_option_value_id. Как оказалось, надо было загружать поле самой модификации, но я долго пытался загружать именно id опции. Ну да ладно. Зато теперь вы знаете, как надо правильно импортировать.

Одна таблица используется модулем «Опции по умолчанию»

  • oc_product_option_value

Это стандартная таблица в opencart, как вы знаете. Плагин добавил  в нее новое поле:

if_default - это булево поле, которое отвечает за отображение по умолчанию опции во время открытия карточки товара.

 

Особенность загрузки изображений

Столкнулся с такой ситуацией. Надо было загружать картинки. Вы и так про это могли догадаться. Особенность в том, что картинки есть на разных опциях, и они пересекаются. Т.е. одна и та же картинка может быть у разных модификаций. И для того чтобы они не повторялись на карточке товара, то надо было их отфильтровать. Чтобы было понятно о чем идет речь поясню, что мы импортировали товары тематики «мебель». Т.е., например, товар какой-нибудь стул, который имеет разные цвета и разную драпировку. Представляете? И картинки могу пересекаться. Т.е. чтобы opencart не сошел с ума от количества одинаковых картинок, пришлось отфильтровать перед импортом все картинки на уникальность по ссылке на оригинальную картинку. После того как все было отфильтровано, то можно уже было начинать импорт товаров. Вообще импортировать картинки на опциях можно только так. По-другому будет неправильно, а именно некрасиво. Поэтому лучше лишний час поработать и сделать так как правильно. Потому что импорт нескольких тысяч товаров ответственный момент. А особенно если есть хороший качественный контент, которым можно импортировать на сайт, то надо этим пользоваться. Покупатели товара оценят и скажут спасибо.

 

О чем разработчик плагина не подумал, так это про то, что opencart может содержать на одной характеристики несколько значений. Как ни странно как это обработать в этом плагине я не нашел. Видимо этого просто нет. Хорошо, что в нашем текущем проекте этого не было, а пришлось бы искать другой плагин или потребовалась бы доработка.

 

Оценка решения

Сравнивания получившееся решение с теми, что доступны в открытом доступе хочется себя похвалить. Получилось классное решение. Правда, сказать оценят его только настоящие ценители наполнения. Можно импортировать сразу структуру категорий. Можно импортировать сразу все товары с характеристиками и модификациями. Как я уже говорил, есть поддержка множественных значений характеристик. Это очень важно на некоторых проектах. Модуль сам умеет “отключать товары”, что очень удобно. Вы, наверное, знаете, что этот модуль мы можем подключить и к нашей обработку прайсов ПрайсМатриксу и к нашему парсеру товаров V4. Получилось очень универсальное решение. И пользоваться им одно удовольствие для клиентов. Конечно, некоторое время надо повозиться с настройками, но в итоге это делается все-таки минут за 10, и мы получаем хороший инструмент для повседневной работы.

 

opencart_result

Плюсы и минусы

Решение обладает как своими минусами, так и плюсами.

Минусы заключаются в том, что это все-таки программа для операционной системы Windows. И то, что программа работает напрямую с БД.

 

Из плюсов отмечу, что если мы настроим эту программу для вас, то она уже будет работать как часы. И сможет импортировать десятки тысяч товаров в ваш opencart. Собственно мы только с такими задачами и работает и ориентируемся на больших клиентов, которым нужны надежные решения их задач. Из-за того, что это программа для Windows, то пользоваться ей очень просто. В первую очередь, установка очень простая. Скачал установщик. Запустил. Дошел до конца и все - начинай работать. Ну и надежность работы высокая. Модуль не зависит от настроек хостера на выполнение скрипта, а так же от выделяемой памяти на процесс

 

OpenCart 2.1.0.2

Стоит сказать, что недавно opencart без объявления войны в новой версии  2.1.0.2 поменял папку, где хранит изображения товаров. И поэтому модуль импорта пришлось немного переписать для поддержки новой версии opencart. Забавно, что в новой версии они практически ничего не поменяли, а только затронули эту папку. Зачем они это делали просто понять нельзя. Может, что хорошее хотели сделать, но я так и не смог понять их логику.

 

Взгляд на ситуацию с OpentCart

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

Именно быстрота, бесплатность и аскетичность позволили OpenCart иметь то, что практически каждый четвертый магазин в России делается на его базе. Конечно, не всегда opencart идеален, но он развивается и многим нравится за свою простоту. У него большая пользовательская база. Люди пользуются. Программисты есть. Проект развивается. Все довольны.

 

Поддержка OpenCart и ocStore

Многие, наверное, задались вопросом, а то, что я пишу везде про opencart будет ли работать также и для ocStore, которая так популярна в России и является «форком» opencart  от версии 1.5. Отвечаю. Работать будет. Модуль импорта поддерживает все версии веток 1.5, 1.6, 1.7, 2.0 opencart и ocStore, которые вышли на данный момент.

 


4 комментария

  1. Скажите, пожалуйста, а какая CMS хорошо работает с модификациями? В частности, в какой можно привязать фото, цену, установить значение по умолчанию?

    • PrestaShop 1.6, AdvantShop,InSales

  2. Добрый день, каким образом возможно воспользоваться данным решением?

    • Оставить заявку на сайте. Оценим ваш проект. Сделаем техническое задание. Поработаем.