Запуск модуля
Для запуска генерации надо перейти по роуту extension/feed/unixml/feed. Далее будет описан весь процесс работы в кратком виде.
Запускается исполняемый файл по адресу catalog/controller/extension/feed/unixml/feed.php.
В нем идет загрузка контроллера по роуту catalog/controller/extension/feed/unixml/startup из файла catalog/controller/extension/feed/unixml.php функция startup результат которой передается в массив $startup роута extension/feed/unixml/feed. В нем есть ключи с данными:
- [additional_params] => Дополнительные статические параметры (пункт 3.12)
- [andor] => Логика выгрузки (пункт 2.4)
- [attribute_status] => Параметр выгрузки атрибутов (пункт 3.8)
- [categories] => Идентификаторы категорий для фида (пункт 2.2)
- [category_match] => Замены категорий, наценки и кастомные теги категорий. В виде массива (пункт 3.7)
- [category_path] => Полный путь к категориям в serialize виде. Если сделать unserialize то можно забрать полный путь по ключу c id категории.
- [clear_desc] => Режим очистки описаний (пункт 3.6)
- [currency] => Идентификатор валюты товаров (пункт 1.4)
- [custom_sql] => Изменения в sql запросе (пункт 4.1)
- [custom_xml] => Кастомный код в итерации товара (пункт 4.3)
- [custom_xml_after_sql] => Кастомный код после SQL запроса (пункт 4.2)
- [custom_xml_final] => Кастомный код после формирования массива с товарами (пункт 4.4)
- [decimal_place] => Округление цены до сотых, десятых или не округлять. Данные беруться с настроек магазина Система - Локализация
- [delivery_cost] => Стоимость доставки (пункт 1.5)
- [delivery_jump] => Время перескока (пункт 1.7)
- [delivery_time] => Сроки доставки (пункт 1.6)
- [field_id] => С какого поля забираем id товара (пункт 5.2)
- [field_price] => С какого поля забираем цену товара (пункт 5.3)
- [fields] => Дополнительные поля для выгрузки (пункт 5.1)
- [gendesc] => Шаблон генерации описания товара (пункт 3.4)
- [gendesc_mode] => Режим генерации описания товара (пункт 3.5)
- [genname] => Шаблон генерации названия товара (пункт 3.3)
- [image] => Привязка к фото (пункт 2.7)
- [images] => Выгрузка дополнительных фото (пункт 3.11)
- [language] => Идентификатор языка фида (пункт 1.3)
- [log] => Логирование выгрузки (пункт 5.5)
- [manufacturers] => Идентификаторы категорий для фида (пункт 2.3)
- [markup] => Наценка на все товары (пункт 3.1)
- [name] => Название компании в фиде (пункт 1.2)
- [option_multiplier] => Массив данных для умножения опций на товар в serialize виде (пункт 3.2)
- [option_multiplier_status] => Умножение товара на опции (пункт 3.2)
- [product_markup] => Наценка на группы товаров (пункт 3.9)
- [products] => Товары для выгрузки или запрета, если такие заданы (пункт 2.1)
- [products_mode] => Режим обработки товаров выше (пункт 2.1)
- [quantity] => Привязка на наличие (пункт 2.6)
- [replace_name] => Списки замен (пункт 3.10)
- [secret] => Ключ защиты от запуска (пункт 5.6)
- [seopro] => Наличие в системе SEOPRO а также привязка к главной категории (пункт 2.5)
- [status] => Статус выгрузки (пункт 1.1)
- [step] => Количество выборки за раз (пункт 5.4)
- [stock] => Идентификатор состояния на складе для обозначения товара как в наличии без его положительного остатка (пункт 2.6)
- [utm] => Приставка к ссылке (пункт 3.13)
- [xml_name] => Название генерируемого файла (пункт 5.7)
- [feed] => Название фида
- [stat] => Массив с данными статистики генерации фида
- [category_markup] => Наценки на товары категорий (пункт 3.7)
- [category_tag] => Кастомные теги категорий (пункт 3.7)
- [categories_xml] => Массив с категориями для XML. Ключ массива - это id категории. Удобно для любой обработки. Есть category_id, измененное название категории, оригинальное в ключе original
- [currency_xml] => Валюта выгрузки
После чего между //XML_body и //XML_body у нас формируется сам XML файл. Именно эта часть открывается когда мы смотрим на Структура файла XML.
В этом блоке формируется заголовок XML и идет обход категорий. Далее готовое пишется либо в файл, либо отдается в браузер через метод
$this->unixml->exportToXml($startup, $xml, "start");
Далее идет "по блочное" обращения к UniXML через
$controller_data = $this->load->controller($controller, $startup);
где забираются товары для обхода их в цикле и запись в XML файл
После чего структура XML закрывается и наш фид готов.
В примере feed.php это любой маркетплейс который есть в модуле, например yandex.php.