Программа ставится на ваш хостинг рядом с магазином и делает одну вещь: берёт данные поставщика и кладёт их в каталог. Ниже — что происходит между этими двумя точками.
Откуда берутся данные
Источник — прайс-лист поставщика: ссылка на XML или YML, файл CSV, книга Excel. Если прайса нет вовсе, данные собираются со страниц сайта поставщика — это отдельная работа, про неё есть своя запись.
Сколько позиций программа осилит за раз, решает не она, а память вашего хостинга: на разбор прайса уходит примерно втрое больше, чем весит файл. При 128 МБ это прайс тысяч на тридцать позиций, при 256 МБ — вдвое больше. Дороже всех обходится Excel: книга читается целиком.
Что происходит с товаром по дороге
Прочитанная позиция идёт по конвейеру, и на каждом шаге её может изменить плагин:
- цена — коэффициент по категории, скидка, фиксированная цена по артикулу, округление;
- тексты — замена фраз в названии и описании, приведение значений характеристик к общему виду;
- картинки — подтянуть изображения, на которые ссылается описание, привести фото к одному размеру, наложить знак;
- мета-теги — заголовок, описание и ключевые слова по маске, своей для каждой категории.
Само ядро товарных функций не имеет: всё перечисленное делают плагины, и каждый включается отдельно. Что именно есть — в разделе Плагины.
Как данные попадают в магазин
Писать в чужую базу наугад нельзя: у каждого движка своя схема таблиц. Поэтому за запись отвечает драйвер магазина — отдельный класс, который знает таблицы именно этой CMS, и больше об этом не знает никто. Сейчас написаны драйверы для OpenCart 2 и 3, WooCommerce, Shop-Script 8…12 и Joomla JoomShopping. Платформам, в которые нельзя писать напрямую, программа отдаёт YML-фид — его они импортируют сами.
Второй запуск и все следующие
Первый импорт заводит товары, дальше работает обновление: по расписанию программа снова читает прайс и меняет то, что изменилось, — цену, остаток, появившиеся позиции.
Товар, пропавший из прайса, не удаляется, а скрывается. Вернётся в прайс — вернётся и в витрину вместе со своим адресом, отзывами и статистикой. Удалять такое — значит терять страницу, которая уже что-то набрала в поиске.
Расписание у каждого поставщика своё: тому, кто обновляет прайс дважды в сутки, ежечасные проверки ни к чему.
Что нужно от хостинга
PHP 8.1 или новее, доступ к базе магазина и одно cron-задание. Подойдёт обычный shared-хостинг; настройка cron входит в установку.
Посмотреть, как это выглядит на экране, можно в демо. Хотите проверить на своём прайсе — пришлите ссылку, покажем 20 ваших товаров в том виде, в каком они попадут в магазин.