Экспорта каталогов в YML
Готовое решение, экспорта каталога в YML с гибкими настройками и быстрым разворачиванием на любом проекте 1С-Битрикс
Last updated
Готовое решение, экспорта каталога в YML с гибкими настройками и быстрым разворачиванием на любом проекте 1С-Битрикс
Last updated
Профиль запакован в модуль. Установка производится через Marketplace-Установленные решения. При установке необходимые файлы копируются в соответствующие места. При удалении модуля, все файлы профиля удаляются.
P.S. Если сайт работает на кодировке, отличной от UTF-8. Перед установкой нужно перекодировать все файлы модуля и профиля выгрузки в нужную кодировку, а также изменить шапку и функции скрипта обработки данных (stmd_run.php).
Профиль представляет из себя 3 скрипта связанных между собой и соответствующие языковые файлы к ним. Файловая структура в рамках какого-либо сайта показана на рис. 1. Все строки используемые в скрипте вынесены в соответствующие языковые файлы и вызываются с помощью GetMessage();
Данный скрипт предназначен для вывода основных настроек профиля. Данный скрипт предназначен для вывода основных настроек профиля.
Особенности:
Пункт «Детальные настройки» открывает модальное окно, скрипт stmddetail.php. В этом окне есть обязательный пункт «Условие выбора торговых предложений».
Время выполнения шага: Обязательно ставить в районе 10-30 при большом объеме данных. Иначе скрипт может сработать не до конца из-за настроек сервера.
Чтобы сохранить файл в другом каталоге (не в /bitrix/catalog_export/) можно внести правки в код или же писать путь используя ..(две точки) например: ../yandex_40201.php. Если не вводить ничего, то профиль сам сгенерирует имя файла в формате yandex[0-9]{5,6}
Следующий скрипт предназначен для отображения модального окна с детальными настройками. Настройки содержат две вкладки, настройки изображены на рисунках 3,4.
Особенности:
«Валюты и цены» взяты со стандартного профиля обмена
Было принято решение убрать настройку вывода НДС
Если выбрать «Выгружать идентификатор из XML_ID», он будет выгружаться только при наличии, иначе вместо него будут выгружаться обычный ID
Чтобы вывести основную картинку из свойства, нужно заполнить оба поля (Основная картинка и доп. картинки). Первая картинка из свойства станет основной, остальные дополнительными.
Данный скрипт заканчивает цикл выгрузки при нажатии на кнопку «Экспортировать». В соответствии с настройками будут выгружены товары в формате yml. Пример готовой выгрузки показан на рис. 5.
При успешном выполнении скрипта Bitrix выдаст сообщение о успехе и ссылку на файл.
Для сохранения настроек используется форма с соответствующими полями.
Форма представляет из себя таблицу с input’ами
Для вкладок используется класс Bitrix: CAdminTabControl
Также форма содержит скрытые input’ы с важными настройками
Ячейки таблиц сделаны с использованием css-классов bitrix’а:
adm-content-cell-l(r) (Для выравнивания ячеек)
heading (Для обозначения заголовков)
adm-info-message (Для вывода подсказок)
В скрипте с основными настройками (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/