Модуль импорта/экспорта из CSV
Проект на стадии активной разработки, поэтому пока что исходный код недоступен. Релиз на Github запланирован после проведения тестов на стабильность импорта данных.
UPDATE:
Репозиторий — https://github.com/Freeocart/fo-csv
Готовый к установке билд можно найти здесь — https://github.com/Freeocart/fo-csv/releases
UPDATE #2:
Сделал адаптацию модуля для Opencart 1.5.6.
Репозиторий — https://github.com/Freeocart/fo-csv-15
Релизы (для 1.5 — начиная с 1.0.0) — https://github.com/Freeocart/fo-csv-15/releases
Структура модуля подразумевает несколько компонент:
Разработка модуля ведётся под версии Opencart 2.3 / 3+.
Даунгрейдинг под Opencart 1.5 пока не планируется, однако если будет большой спрос, то можно будет реализовать модуль и под более старую платформу.
Компонент импорта изначально задуман быть максимально гибким при использовании. Система подгрузки CSV заголовков и предоставления пользователю возможность самостоятельно выбирать какое поле CSV документа в какое поле базы данных должно попасть. Подобный UX я встретил при работе с Advantshop, однако в среде Opencart подобного подхода, к сожалению, не увидел.
При импорте данных, вы можете приложить архив с изображениями, имеется возможность подгрузки изображений по URL и некоторые другие возможности.
UI модуля разрабатывается при помощи Vue2 и некоторых его компонент (vuex/vue-i18n/router), что позволяет серьёзно сократить время проектирования и разработки новых функций.
При старте импорта происходит следующее: отправляется запрос на сервер (import), в результате этого запроса заливаются CSV файл и Zip архив (если есть).
Модуль сохраняет указанные ресурсы по определённому адресу, выполняет распаковку архива и генерирует специальный ключ.
Если предусмотрены какие-либо действия массового характера (например, удаление всех производителей) — оно выполняется здесь же.
После этого клиент получает ключ и метаинформацию о csv файле, например размер в байтах.
Далее фронт посылает запрос importPart, с полученными данными на первом шаге данными, бэкенд последовательно считывает записи из файла и импортирует их в базу данных. В результате указатель позиции в файле смещается и фронтенд получает обновлённые данные.
До тех пор пока весь файл не будет считан, либо бэкенд не выдаст ошибку — запросы importPart повторяются.
Stay tuned