- Тема Buzz eCommerce производства непальской компании Spider Buzz
- Установлен плагин выбора пунктов доставки (разработка «Ра-Соло»)
- Установлено ПО создания и вывода меню товаров ИМ (разработка «Ра-Соло»).
- Запрограммировано адаптивное меню товаров во внешнем интерфейсе.
- Разработана фоновая система импорта товаров из файла электронной таблицы типа «xlsx».
Технология ПО импорта товаров
Одно из требований технического задания по данному проекту – наполнение сайта товарами из имеющегося файла электронной таблицы Excel типа «xlsx». Рассмотрим решение этой задачи подробнее.
Общий вид исходных данных
Основная часть исходных данных представлена на скриншоте:
В процессе импорта производится необходимое преобразование данных. Например, удаляются нежелательные символы (на скриншоте они отображаются как квадратики с тенью и ромбики).
Для наглядности часть исходных данных скрыта.
Проблематика задачи
Как видим, формат входного файла вполне обычный. В каждой строке в виде позиционных параметров перечислены данные товара – описание, заголовок, цена, артикул и т.д. Исходные изображения товаров размещены на основном сайте заказчика, в системе Prom.ua. Соответственно, для каждого товара в исходном файле указаны адреса этих изображений. В процессе импорта одного товара все его изображения скачиваются на сервер c помощью пакета cURL. Полученный внутренний код картинки используется для создания изображения на целевом сайте в виде элемента медиабиблиотеки.
База даных товаров имеет достаточно большой размер – 480 строк. Кроме того, для каждого товара заданы от 4 до 8 изображений. В итоге медиабиблиотека товаров на целевом сайте включает в себя около двух с половиной тысяч изображений. Само собой разумеется, что скачивать такой объем данных по протоколу HTTP следует не за один прогон алгоритма, а с помощью технологии итераций.
Алгоритм одной итерации
Сперва из исходной таблицы извлекается список изображений товара. По каждому изображению выполняется соответствующий cURL-запрос и создается один элемент медиабиблиотеки. Для вновь созданного элемента медиабиблиотеки в базу данных целевого сайта записывается специальный признак, в котором указан исходный URL, с которого было получено соответствующее изображение. Таким образом мы предотвращаем повторное скачивание картинок с последующим дублированием в медиабиблиотеке. Из полученных изображений составляется фотогалерея товара. Первое изображение из списка становится основным изображением этого товара.
После того, как изображения товара готовы, происходит создание элемента базы данных товаров интернет-магазина. Для предотвращения дублирования товаров используется стандартный параметр – артикул. Помимо основных параметров товара, в базу данных помещаются значения метазаголовка и метаописания. Формат этих данных соответствует формату плагина Yoast SEO.
Разбиение операций импорта по различным итерациям
В течение одной итерации производится импорт некоторой порции товаров. Размер этой порции определяется динамически, в зависимости от времени выполнения итерации. Если время выполнения итерации превышает пороговое значение, итерация прерывается. Данное техническое решение необходимо для того, чтобы исключить непредсказуемый результат при принудительном прекращении выполнения из-за превышения лимита времени того сервера, на котором установлено ПО.
Управление импортом
Для управления импортом в админ-панели сайта выполнена специальная страница настроек:
На вышеприведенном фото хорошо видно, какие функции управления были реализованы в ходе разработки алгоритма импорта. Оператор сайта имеет возможность управлять исходными файлами на сервере. В импорте участвует только один файл, который был загружен на сервер позже всех. Оператор может запускать и останавливать импорт, а также выполнять одну итерацию. Наряду с возможностью выполнять итерацию из админпанели сайта, имеется специальная процедура, которую можно запускать с помощью планировщика CRON, с тем, чтобы полностью автоматизировать процесс импорта товаров.