Экспорта каталогов в YML

Готовое решение, экспорта каталога в YML с гибкими настройками и быстрым разворачиванием на любом проекте 1С-Битрикс

Установка профиля экспорта

Профиль запакован в модуль. Установка производится через Marketplace-Установленные решения. При установке необходимые файлы копируются в соответствующие места. При удалении модуля, все файлы профиля удаляются.

P.S. Если сайт работает на кодировке, отличной от UTF-8. Перед установкой нужно перекодировать все файлы модуля и профиля выгрузки в нужную кодировку, а также изменить шапку и функции скрипта обработки данных (stmd_run.php).

Структура файлов

Профиль представляет из себя 3 скрипта связанных между собой и соответствующие языковые файлы к ним. Файловая структура в рамках какого-либо сайта показана на рис. 1. Все строки используемые в скрипте вынесены в соответствующие языковые файлы и вызываются с помощью GetMessage();

Функционал

stmd_setup.php

Данный скрипт предназначен для вывода основных настроек профиля. Данный скрипт предназначен для вывода основных настроек профиля.

Особенности:

  • Пункт «Детальные настройки» открывает модальное окно, скрипт stmddetail.php. В этом окне есть обязательный пункт «Условие выбора торговых предложений».

  • Время выполнения шага: Обязательно ставить в районе 10-30 при большом объеме данных. Иначе скрипт может сработать не до конца из-за настроек сервера.

  • Чтобы сохранить файл в другом каталоге (не в /bitrix/catalog_export/) можно внести правки в код или же писать путь используя ..(две точки) например: ../yandex_40201.php. Если не вводить ничего, то профиль сам сгенерирует имя файла в формате yandex[0-9]{5,6}

stmd_detail.php

Следующий скрипт предназначен для отображения модального окна с детальными настройками. Настройки содержат две вкладки, настройки изображены на рисунках 3,4.

Особенности:

  • «Валюты и цены» взяты со стандартного профиля обмена

  • Было принято решение убрать настройку вывода НДС

  • Если выбрать «Выгружать идентификатор из XML_ID», он будет выгружаться только при наличии, иначе вместо него будут выгружаться обычный ID

  • Чтобы вывести основную картинку из свойства, нужно заполнить оба поля (Основная картинка и доп. картинки). Первая картинка из свойства станет основной, остальные дополнительными.

stmd_run.php

Данный скрипт заканчивает цикл выгрузки при нажатии на кнопку «Экспортировать». В соответствии с настройками будут выгружены товары в формате yml. Пример готовой выгрузки показан на рис. 5.

При успешном выполнении скрипта Bitrix выдаст сообщение о успехе и ссылку на файл.

Программный код

Frontend

  • Для сохранения настроек используется форма с соответствующими полями.

  • Форма представляет из себя таблицу с input’ами

  • Для вкладок используется класс Bitrix: CAdminTabControl

  • Также форма содержит скрытые input’ы с важными настройками

  • Ячейки таблиц сделаны с использованием css-классов bitrix’а:

    • adm-content-cell-l(r) (Для выравнивания ячеек)

    • heading (Для обозначения заголовков)

    • adm-info-message (Для вывода подсказок)

Backend

  • В скрипте с основными настройками (stmd_setup.php) есть скрытый input[name=SETUP_FIELDS_LIST]. При добавлении новых настроек, нужно добавить в этот input имя поля.

  • В скрипте с детальными настройками (stmd_detail.php) есть три основных массива (также три логических раздела) с настройками: commonFields, deliveryFields, vendorFields. При добавлении новых настроек или смысловых разделов можно делать наподобии них.

  • Все остальные настройки хранятся в отдельных переменных. (Стандартный функционал).

  • Все настройки из «Детальных настроек» хранятся массивом в input’е XML_DATA

Далее пойдут особенности работы со скриптом обработки данных (stmd_run.php)

  • При необходимости получения значения свойства пользоваться стандартной функцией yandex_get_value. Она довольно сложная, но многофункциональная.

  • Для редактирования основных полей товара (Описание, URL, Основная картинка) использовать стандартную функцию yandexPrepareItems

  • Приводить текст к единой кодировке и очищать от ненужных символов нужно с помощью стандартной функции yandex_text2xml

  • Для смены кодировки файла выгрузки нужно внести изменения в первоначальные записи в файл и в стандартные функции.

  • Настройки доставки и самовывоза можно указывать как для отдельных товаров внутри (в исходной версии профиля закомменчено), так и для всех товаров на уровне

Комментарии

Во всех трех скриптах имеются комментарии нескольких типов:

  • // Однострочный комментарий, указывающий, что делает (или хранит) текущая, либо следующая строчка

  • Комментарий в html-форме для более быстрого поиска нужной строки/логического блока

  • / #Название блока# / код / #Название блока#. Конец. / Используется в блоках, которые чаще всего приходится кастомизировать. Также используется для объяснения сложных блоков кода

  • / ---Ошибка--- #Текст ошибки# / Используется для обозначения всех ошибок (чтобы в лишний раз не лезть в lang/ru/#скрипт#.php)

Также присутствуют комментарии с пометкой «Важно!», предназначенные для особо ключевых участков в коде.

Ссылка на архив, позже добавим ссылку на гит

Валидатор YML https://webmaster.yandex.ru/tools/xml-validator/

Last updated