92021
110

Официальный интернет-магазин…

Садовые цветы крупнее, полевые - сильнее

Интернет-магазин товаров для аграриев – официальный сайт предприятия «Шопагро»
  • Система управления контентом: Вордпрес/Вукомерс
  • Тема Buzz eCommerce производства непальской компании Spider Buzz
  • Устранены существенные ошибки в программном коде.
  • Установлено ПО создания и вывода меню товаров ИМ (разработка «Ра-Соло»).
  • Запрограммировано адаптивное меню товаров во внешнем интерфейсе.
  • Разработана фоновая система импорта товаров из файла электронной таблицы типа «xlsx».

Технология ПО импорта товаров

Одно из требований технического задания по данному проекту – наполнение сайта товарами из имеющегося файла электронной таблицы Excel типа «xlsx». Рассмотрим решение этой задачи подробнее.

Общий вид исходных данных

Основная часть исходных данных представлена на скриншоте:

В процессе импорта производится необходимое преобразование данных. Например, удаляются нежелательные символы (на скриншоте они отображаются как квадратики с тенью и ромбики).

Для наглядности часть исходных данных скрыта.

Проблематика задачи

Как видим, формат входного файла вполне обычный. В каждой строке в виде позиционных параметров перечислены данные товара – описание, заголовок, цена, артикул и т.д. Исходные изображения товаров размещены на основном сайте заказчика, в системе Prom.ua. Соответственно, для каждого товара в исходном файле указаны адреса этих изображений. В процессе импорта одного товара все его изображения скачиваются на сервер c помощью пакета cURL. Полученный внутренний код картинки используется для создания изображения на целевом сайте в виде элемента медиабиблиотеки.

База даных товаров имеет достаточно большой размер – 480 строк. Кроме того, для каждого товара заданы от 4 до 8 изображений. В итоге медиабиблиотека товаров на целевом сайте включает в себя около двух с половиной тысяч изображений. Само собой разумеется, что скачивать такой объем данных по протоколу HTTP следует не за один прогон алгоритма, а с помощью технологии итераций.

Алгоритм одной итерации

Сперва из исходной таблицы извлекается список изображений товара. По каждому изображению выполняется соответствующий cURL-запрос и создается один элемент медиабиблиотеки. Для вновь созданного элемента медиабиблиотеки в базу данных целевого сайта записывается специальный признак, в котором указан исходный URL, с которого было получено соответствующее изображение. Таким образом мы предотвращаем повторное скачивание картинок с последующим дублированием в медиабиблиотеке. Из полученных изображений составляется фотогалерея товара. Первое изображение из списка становится основным изображением этого товара.

После того, как изображения товара готовы, происходит создание элемента базы данных товаров интернет-магазина. Для предотвращения дублирования товаров используется стандартный параметр – артикул. Помимо основных параметров товара, в базу данных помещаются значения метазаголовка и метаописания. Формат этих данных соответствует формату плагина Yoast SEO.

Разбиение операций импорта по различным итерациям

В течение одной итерации производится импорт некоторой порции товаров. Размер этой порции определяется динамически, в зависимости от времени выполнения итерации. Если время выполнения итерации превышает пороговое значение, итерация прерывается. Данное техническое решение необходимо для того, чтобы исключить непредсказуемый результат при принудительном прекращении выполнения из-за превышения лимита времени того сервера, на котором установлено ПО.

Управление импортом

Для управления импортом в админ-панели сайта выполнена специальная страница настроек:

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

Домен проекта: https://shopagro.com.ua.
Открыть проект в другой вкладке