# Контекст
Почти каждый проект на Битриксе рано или поздно упирается в импорт каталога. Поставщик прислал YML или XML, маркетплейс генерирует фид, старый сайт умеет только "выгружать в файл" — а вам нужно, чтобы в каталоге Битрикса появились живые товары с понятной связкой по идентификаторам.
Быстрый путь — написать скрипт на коленке, положить в /local
и повесить на cron. Через полгода никто не помнит, как он работает, где логика,
почему часть товаров пропала и что будет, если сменится структура фида.
# Задача модуля
Сделать импорт YML/XML в Битрикс:
allow_url_fopen — с поддержкой cURL# Как это устроено
Модуль регистрирует класс \Empire\YmlImport\Importer и агент
Importer::runAgent(). В настройках модуля вы указываете:
- инфоблок каталога, в который нужно грузить товары;
- источник YML/XML — внешний URL или путь к файлу типа
/upload/feed.xml.
Дальше сценарий выглядит как shell‑скрипт:
$ php -r "\\Empire\\YmlImport\\Importer::import(
IBLOCK_ID,
'https://example.com/feed.yml'
);"
Внутри модуль:
- загружает файл (через cURL или
file_get_contents); - разбирает XML через
simplexml_load_string; - ищет офферы в
shop > offers > offerили вoffers > offer; - для каждого оффера забирает
id,name,descriptionи др.; - ищет элемент по
XML_ID = idи либо обновляет его, либо создаёт новый.
# Админ‑интерфейс
Вместо отдельного самописного скрипта модуль добавляет раздел в меню контента:
Контент → Импорт YML/XML (Empire)
├─ Импорт # запуск и настройки
├─ Профили # (зарезервировано под сценарии)
└─ История импортов # (зарезервировано под логику логов)
В форме настроек вы выбираете инфоблок и источник, можете сразу нажать «Сохранить и запустить импорт» и получить понятное сообщение об успехе или ошибке.
# Агент и фоновые обновления
При установке модуль регистрирует агент:
\CAgent::AddAgent( "\\Empire\\YmlImport\\Importer::runAgent();", "empire.ymlimport", "N", 3600 );
Агент раз в заданный интервал читает настройки (инфоблок и источник) и запускает тот же код, что и ручной импорт. Это удобно, когда фид обновляется раз в сутки/час, а вы не хотите думать о расписании cron.
# Когда модуль особенно полезен
- есть поставщик с YML/XML‑фидом и нужно завести каталог на Битриксе;
- старый сайт генерирует YML, а новый проект уже живёт на 1С‑Битрикс;
- нужно регулярно обновлять цены/остатки без сложных интеграций;
- хочется иметь простой, но понятный код импорта внутри
/local/modules.
# Как внедряем на проектах
- Аудит фида. Смотрим структуру XML, поля, варианты офферов.
- Настройка инфоблока. Подгоняем свойства под фид и бизнес‑логику.
- Тонкая доработка модуля под проект. Преобразование полей, работа с ценами и остатками.
- Тестовый прогон. Заливаем в отдельный инфоблок, проверяем данные.
- Боевой запуск. Включаем агент, настраиваем мониторинг и логи.
# Обсудить модуль под ваш проект
Если у вас есть YML/XML‑фид и вы хотите аккуратно завести его в Битрикс — можем адаптировать empire.ymlimport под ваш сценарий или собрать отдельное решение.