Перенос каталога с одного сайта на другой кажется простой задачей только до первого повторного обновления. Однократно получить товары, создать карточки и загрузить изображения недостаточно. Если импорт нужно запускать повторно, система должна корректно определять уже существующие товары, обновлять их, обрабатывать изображения и пересчитывать цены.
В рамках разработки интернет-магазина мы реализовали модуль, который получает товары с сайта-источника через API и создаёт их в каталоге CS-Cart как обычные товары. При повторном запуске уже импортированные позиции обновляются, а новые создаются как отдельные карточки.
Главная задача заключалась не в разовом копировании каталога, а в создании механизма, который можно использовать повторно.
Как устроен импорт товаров
Модуль получает каталог с сайта-источника через API. Товары загружаются последовательно, а при необходимости для отдельных позиций дополнительно запрашивается подробная информация.
В импортируемые данные входят название, код, цены, статус, краткое и полное описание, SEO-имя и изображения. После получения данных система проверяет, существует ли соответствующий товар в локальном магазине.
Если товар импортируется впервые, создаётся новая карточка. Если он уже был перенесён — обновляется существующая запись.
Такой подход позволяет разделить получение данных и их обработку и безопасно повторять импорт.

Как система определяет, что товар уже импортирован
При повторном импорте важно не создавать лишние карточки. Если сегодня перенести 500 товаров, а через неделю запустить импорт ещё раз, система должна обновить эти 500 позиций, а не создать ещё 500.
Для каждого импортированного товара создаётся служебный ключ: mp:{product_id}. Он сохраняется в поле source_import_key. При следующем запуске модуль формирует такой же ключ и ищет его в локальном каталоге. Если запись найдена — товар обновляется. Если нет — создаётся новый.
Например, товар с идентификатором 4688 получает ключ mp:4688. При следующем импорте он позволяет определить уже существующую карточку.
Такой механизм является основой повторной синхронизации: система понимает, какую запись нужно обновить, а какую создать впервые.


Как переносить цены, если у сайтов разные валюты
Отдельная задача — Ð