Иногда возникает необходимость создания собственного профиля экспорта xml в Bitrix, в силу некоторых обстоятельств. Может того захотел заказчик, а может вы просто решили сделать xml для выгрузки на Авито или других сервисов, для которых стандартный экспорт yml yandex не подойдет.
Расположение файлов и необходимые каталоги
Для того, чтобы добавить свой профиль экспорта xml, следует понимать, где находятся нужные файлы и за что отвечает каждый из них (все профили находятся в разделе: магазин > настройки > экспорт данных). Чтобы профиль экспорта отображался в левой панели под вкладкой Экспорт данных, необходимо в требуемом профиле экспорта нажать добавить в меню.
Все необходимые файлы, которые понадобятся, находятся в каталоге \bitrix\php_interface\ include\catalog_export. Все готовые файлы экспорта лежат в каталоге \bitrix\catalog_export\имя_файла По умолчанию в Bitrix уже есть возможность выгрузки каталога для Яндекс Маркета, поэтому для создания собственного профиля лучше всего взять уже готовые файлы, чтобы сократить время на написание кода, если вы в нем ограничены. Какие файлы понадобятся - это файлы с окончанием _run, _setup и _detail. Файл _setup отвечает за формирование внутреннего интерфейса Bitrix, где находятся все необходимые настройки выгрузки (экспорта) рис.1.
Рис.1
Файл _detail отвечает за настройки детального экспорта рис.2.
Рис.2
А файл _run - это основной файл экспорта, который формирует итоговый xml файл рис.3.
Рис.3
Чтобы задать название профиля экспорта, требуется указать свое название в начале файла _setup и _run между тегами <title>Yandex</title>, где Yandex - название профиля экспорта.
Соответственно для формирования итогового xml файла нам понадобиться отредактировать файл _run.php, а если необходимо добавить основные настройки, например: добавить город для всех товаров или добавить дополнительные детальные настройки, нам потребуется отредактировать файл _setup (основные настройки) и файл _detail соответственно.
Детальный разбор _run и _setup. Добавление переменных в список переменных экспорта.
Что такое список переменных профиля экспорта? Список переменных - это те данные, которые вы заполняете при настройке(редактировании) профиля экспорта, а именно: выбор инфоблока для экспорта, выбор групп, доменное имя, время выполнения шага и т.д.
Предположим нам необходимо добавить дополнительное поле с наименованием города для всех наших товаров. Чтобы это осуществить нам необходимо добавить дополнительное поле в основных настройках (это и будет новая переменная в списке переменных, которую мы сможем использовать при экспорте).
Чтобы добавить данное поле (переменную), нам необходимо отредактировать файл yandex_setup.php (название файла указано для примера, вы можете скопировать код и изменить название на свое), где примерно после строки 469 мы добавляем наш код:
<tr>
<td width="40%"><?echo GetMessage("CITY_NAME");?></td>
<td width="60%">
<input type="text" name="CITY_NAME"
value="<?echo htmlspecialcharsbx($CITY_NAME) ?>" size="30">
</td>
</tr>
Здесь мы добавляем наше поле - город, добавляя переменную CITY_NAME. Код: echo GetMessage("CITY_NAME") - это вывод переменной файла локализации, он подключается вначале: IncludeModuleLangFile( $_SERVER['DOCUMENT_ROOT'].' /bitrix/ modules/ catalog/ export_setup_templ.php');, но редактировать его я вам не советую, поскольку это файл модуля каталога. Поэтому лучше поключить свой файл например через тему, функцией IncludeTemplateLangFile или прописать его в файле напрямую (лучше первый вариант).
После чего данную переменную необходимо прописать еще в двух местах этого файла. В строке 506:
<input type="hidden" name="SETUP_FIELDS_LIST"
value="V, IBLOCK_ID, SETUP_SERVER_NAME, SETUP_FILE_NAME,
XML_DATA, USE_HTTPS, FILTER_AVAILABLE, DISABLE_REFERERS,
MAX_EXECUTION_TIME, CITY_NAME">
И добавить вначале файла в условии строка 22-49 примерно. Код:
if (isset($arOldSetupVars['CITY_NAME']))
$CITY_NAME = $arOldSetupVars['CITY_NAME'];
Результат. Добавлено новое поле город.
Теперь мы успешно добавили дополнительное поле(переменную) в своем файле экспорта, которую можно использовать в файле _run для вывода информации, добавив в необходимом месте например: после строки 858, где идет формирование информации xml файла. Примерно следующим образом:
$strTmp .= '<city>'.$CITY_NAME.'</city>'."\n";
Здесь мы добавляем значение нашей переменной в xml файл, между тегами city. Переменная $strTmp используется для формирования данных xml файла.
Таким образом, мы можем быстро создать необходимый xml профиль экспорта, с необходимыми данными.