Свой профиль экспорта xml в Bitrix

12 ноября, 2017 14:53
Admin
19 июня, 2022 9:19

Иногда возникает необходимость создания собственного профиля экспорта xml в Bitrix, в силу некоторых обстоятельств. Может того захотел заказчик, а может вы просто решили сделать xml для выгрузки на Авито или других сервисов, для которых стандартный экспорт yml yandex не подойдет.

Расположение файлов и необходимые каталоги

Для того, чтобы добавить свой профиль экспорта xml, следует понимать, где находятся нужные файлы и за что отвечает каждый из них (все профили находятся в разделе: магазин > настройки > экспорт данных). Чтобы профиль экспорта отображался в левой панели под вкладкой Экспорт данных, необходимо в требуемом профиле экспорта нажать добавить в меню.

Все необходимые файлы, которые понадобятся, находятся в каталоге \bitrix\php_interface\ include\catalog_export. Все готовые файлы экспорта лежат в каталоге \bitrix\catalog_export\имя_файла По умолчанию в Bitrix уже есть возможность выгрузки каталога для Яндекс Маркета, поэтому для создания собственного профиля лучше всего взять уже готовые файлы, чтобы сократить время на написание кода, если вы в нем ограничены. Какие файлы понадобятся - это файлы с окончанием _run, _setup и _detail. Файл _setup отвечает за формирование внутреннего интерфейса Bitrix, где находятся все необходимые настройки выгрузки (экспорта) рис.1.

Рис.1 export

Файл _detail отвечает за настройки детального экспорта рис.2.

Рис.2 export

А файл _run - это основной файл экспорта, который формирует итоговый xml файл рис.3.

Рис.3 export

Чтобы задать название профиля экспорта, требуется указать свое название в начале файла _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'];

Результат. Добавлено новое поле город. export

Теперь мы успешно добавили дополнительное поле(переменную) в своем файле экспорта, которую можно использовать в файле _run для вывода информации, добавив в необходимом месте например: после строки 858, где идет формирование информации xml файла. Примерно следующим образом:

$strTmp .= '<city>'.$CITY_NAME.'</city>'."\n";

Здесь мы добавляем значение нашей переменной в xml файл, между тегами city. Переменная $strTmp используется для формирования данных xml файла.

Таким образом, мы можем быстро создать необходимый xml профиль экспорта, с необходимыми данными.