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