Импорт каталога ~58 000 товаров в интернет-магазин сантехники на CS-Cart из CSV-выгрузки: описания, фото, характеристики в карточку и в фильтры, вложенные категории.
Задача: штатный импортёр CS-Cart берёт простые поля, но на сложной логике (характеристики как фильтры по уровням категорий, повторный импорт без дублей, тысячи фото) требует ручной доводки на каждой итерации. Нужен повторяемый прогон.
Решение — PHP-скрипт на API ядра (бутстрап init.php), без прямой записи в таблицы:
— Категории: резолв пути из 3 уровней, авто-создание с parent_id.
— Товары: upsert по артикулу (fn_update_product) — повтор обновляет, не плодит дубли.
— Характеристики: парс «Название: Значение», создание и привязка.
— Фильтры: привязка к категории 2-го уровня; CS-Cart прячет пустые → видны только релевантные.
— Фото: парс списка путей, привязка к товару; ~180 без фото — в отчёт, не в падение импорта.
— Лог и сводный отчёт: создано/обновлено/пропущено.
Результат: ~58 000 товаров с фото, характеристиками и работающими фильтрами; вложенные категории; идемпотентный прогон — импорт гоняется итеративно без дублей.
Стек: CS-Cart 4.18.3 · PHP 8.1 · MySQL 8.0 · CSV · API ядра CS-Cart