
- MODX 2
- MODX 3
- miniShop2
- miniShop3
- PHP 7.2


Профиль описывает один источник и направление: загрузка на сайт, выгрузка с сайта или обмен в обе стороны. Профилей может быть несколько, например прайс поставщика по API и остатки из Google Таблицы.
| Источник | Что настраивается |
|---|---|
| CSV | Загрузка файла или ссылка. Разделитель и кодировку (UTF-8, Windows-1251) msCatalyst определяет сам. |
| Excel (XLSX) | Загрузка файла или ссылка, лист по названию или номеру. Файл читается построчно, без сторонних библиотек. |
| API (JSON или XML) | Адрес, метод, заголовки, тело запроса, авторизация Bearer, Basic или ключом. Путь к списку товаров (data.items). Постраничность по номеру страницы, смещению, курсору или ссылке на следующую страницу. |
| Google Таблицы | Ссылка на таблицу или её ID. Для чтения открытой таблицы хватает API-ключа. Для записи нужен ключ сервисного аккаунта (JSON), которому вы дали доступ к таблице. Ключ хранится на сервере и в ответах админки не показывается. |
| 1С (CommerceML 2) | Логин и пароль для 1С, тип цены, соответствие статусов заказов ({"Отгружен": 3}). |
Адрес для обмена с 1С:
https://site.ru/assets/components/mscatalyst/1c.php?profile=IDПрофиль с выгрузкой получает адрес фида:
https://site.ru/assets/components/mscatalyst/feed.php?profile=ID&token=...&format=csvФорматы фида: csv, xlsx, json, xml. Фид отдаёт товары раздела профиля. Модификации идут отдельными строками, если включить это в профиле. Ответ кэшируется на время из настройки профиля «Кэш фида».
Чёрн. и «Чёрный»), неоднозначные вы выбираете вручную.По расписанию обмен работает только по утверждённой схеме. Если источник поменял структуру, запуск останавливается и показывает разницу.
trim, strip_tags, replace, split, join, first, number, bool, markup, multiply, round, default, template, lower, ucfirst.
Флажок «Ведёт сайт» заполняет поле только у новых товаров. Правки менеджера на сайте импорт не перезаписывает.
Ключом может быть артикул, любое поле товара или ресурса, опция, TV или ID ресурса. Товар ищется по ключу, даже если связи профиля ещё нет. Поэтому первый импорт по существующему каталогу находит товары, а не создаёт копии.
Пустые ячейки по умолчанию пропускаются: значение на сайте остаётся прежним. В шаге «Поля» это меняется для всего профиля или для отдельного поля в блоке «Правила». Например, можно очищать старую цену, когда поставщик убрал скидку, но не трогать остальные поля. Очищенное число записывается как 0.
В профиле задаются три порога. Запуск останавливается и ждёт подтверждения, если:
Для товаров, которые пропали из источника, выберите действие: ничего не делать, снять с публикации, обнулить остаток или пометить удалённым. Правило касается только товаров, которые создал или связал этот профиль. Если товар вернётся в источник, он снова появится на сайте.
Модификации msCatalyst пишет в msOptionsPrice2 на MODX 2 и в ms3Variants на MODX 3. Недостающие категории по пути «Обувь/Кроссовки», производителей и опции он создаёт сам. Разделители /, >, \ и » равнозначны, регистр букв при поиске категории не важен.
Картинки скачиваются в папку из настройки mscatalyst_sync_images_path. В ячейке может быть:
https://cdn.ru/1.jpg или ссылка без протокола //cdn.ru/1.jpg;photos/1.jpg или /photos/1.jpg. Он считается от поля профиля «Адрес картинок». Там можно указать ссылку (https://supplier.ru/images/) или папку на сайте (assets/import/). Если поле пустое, путь считается от адреса источника.Пути с .. и другие схемы (file:, php:) msCatalyst не принимает. Файл проверяется по сигнатуре: сохраняются JPEG, PNG, GIF, WebP и AVIF. HTML-страница вместо картинки и SVG отклоняются. Уже загруженные ссылки при повторном импорте не скачиваются. Та же картинка под новым адресом второй раз в галерею не попадает. Если картинка не скачалась, запуск записывает ошибку с причиной и адресом, а следующий запуск пробует её снова.
Синхронизация пишет переводы Localizator и связанные ресурсы Babel, см. Мультиязычность.
Каждый запуск хранит прежние значения полей. Кнопка «Откатить» возвращает цены и поля, а созданные запуском товары, категории, производителей и опции удаляет. В истории видно, какой профиль, когда и что поменял.
Запуски по расписанию и продолжение незаконченных запусков выполняет сниппет msCatalystSync из cron или планировщика.