Конструктор xml-тега
Введение
В этом разделе рассмотрим алгоритм работы конструктора xml-тега и примерные варианты настроек, как заполняется любой тег для <offer>
Речь вот об этом конструкторе xml-тега для <offer>, еще его можно назвать конструктором поля.
- Слева указан xml-тег с кратким описание сервиса Яндекс или Google в зависимости от выбранного выше профиля
- Посередине конструктор, в нем задается xml-тегу какое-то поле или свойство, откуда брать значение.
- Справа применяются дополнительные обработчики значения, фильтры, условия для конструктора, они взаимосвязаны.
С самого начала хочу обратить ваше внимание, что в Битриксе Поле и Свойство это все разные понятия, разные данные, у многих на этом самом первом шаге вечная путаница и далее вообще ничего не понятно становится.
Поля элементов в Битриксе заданы по умолчанию, это поля таблицы, их никак не изменить, например это:
Название элемента, Символьный код, Дата активности, Описание анонса, Изображение анонса, Детально описание, Детальное изображение и т.д.
Свойства элементов в Битриксе вообще нигде по умолчанию не заданы, вы их сами добавляете в настройках инфоблока при необходимости, например это:
Хит, Новинка, Лидер продаж, Цвет, Размер, Артикул, Производитель, Материал и т.д.
xml-тег в профиле модуля, это слева выделенные красным, синим и серым цветом теги, для Яндекса и Гугла они разные, например:
id,name,model,vendor,cbid,url,price,description и т.д.
В данном конструкторе как раз есть возможность назначать xml-тегу Поле или Свойство, но не только элемента, а еще и торгового предложения (ТП), но это уже касается интернет-магазина, когда для инфоблока Каталог товаров есть еще инфоблок Торговые предложения, они между собой связаны и имеют разный набор свойств, разные данные в полях и свойствах, а раз xml-тег всего один, в этом конструкторе и настраивается, что записать в него, какое значение откуда взять, из свойства или поля элемента, а может и из свойства или поля ТП, это очень гибко, но сложновато.
Но помимо полей и свойств элемента в прайс-листах могут быть нужны цены, доступность товара, количество, НДС, габариты, валюты, мета-теги и т.д., часть из них может рассчитываться динамически "Цена со скидкой" или составляться по шаблону/формату типа "ДхШхВ", на этот случай есть ряд дополнительных типов поля.
Особенности работы конструктора
1) Если xml-тегу в конструкторе задать всего одно поле, то тут все просто, модуль возьмет значение поля и подставит в значение тега, далее запишет в прайс-лист.
2) Если xml-тегу в конструкторе задать несколько полей, то модуль возьмет значение последнего заданного поля и подставит в значение тега.
3) Если xml-тегу в конструкторе задать несколько разных полей, конкретно в случае с Элементом и Торговым предложением, то в этом случае для элемента подставится одно, для торгового предложения другое, ну что задали, то и подставится, просто в элементах и торговых предложениях могут быть разные свойства.
Но поля у элемента и ТП одинаковые, это все тоже самое, элемент, все из одной таблицы, если элементу и ТП требуется задать только одинаковое поле, например ID или NAME, то достаточно тегу задать всего одно поле конструктора, тогда модуль и для элемента и для ТП возьмет значение этого поля.
(p.s. Я этот момент уже не помню, возможно сейчас наоборот необходимо и поля задавать раздельно, проверьте этот момент, для свойств точно надо разные задавать)
4) Можно xml-тегу задать несколько полей или свойств и склеить их в один xml-тег со значениями через слеш (/) доп. опцией Склеить значения полей -> В один xml-тег
<description>177-79-06 / Фиолетовый</description>
5) Можно xml-тегу задать несколько полей или свойств и разделить их на несколько тегов с разными значениями доп. опцией Склеить значения полей -> В несколько xml-тегов
<picture>https://tuning-soft.ru/upload/iblock/99e/shtany_polosatyy_reys.jpg</picture>
<picture>https://tuning-soft.ru/upload/iblock/e9d/9R15jPM3GXA.jpg</picture>
<picture>https://tuning-soft.ru/upload/iblock/73e/10.jpg</picture>
<description>177-79-06</description>
<description>Фиолетовый</description>
Типы полей конструктора
Некоторые типы полей могут отсутствовать на редакциях без магазина, конкретно Товар, Цена, Валюта зависят от модулей Торговый каталог, Интернет-магазин, Валюты.
Поле элемента | Все возможные поля элемента |
---|---|
Свойство элемента | Все найденные свойства элемента инфоблока |
Поле ТП |
Все возможные поля элемента (торгового предложения) |
Свойство ТП | Все найденные свойства элемента инфоблока (торгового предложения) |
Товар |
Опции данного типа используются модулем Торговый каталог, тут стоит отметить одно важное поле. AVAILABLE - Флаг доступности товара (Y/N) Данное поле будет работать, если: 1) включен количественный учет, глобально в настройках каталога и у товара 2) количество товара больше 0 или разрешена покупка при отсутствии товара Если для товаров глобально количественный учет отключен, то они всегда будут доступны к покупке и это поле будет бесполезно. Если же необходимо как-то записывать флаг true/false доступности товара в прайс-лист, есть еще несколько вариантов, например: 1) Можно создать свойство элемента В наличии типа список (флажок) Да/нет или Y/N и с помощью данной опции конструктора Заменить значение поля (1|Y|>0|true|Да) на логическое заменить его на true/false 2) Можно хранить количество товара в свойстве элемента и с помощью данной опции конструктора Доп. условия для логического значения поля задать флаг доступности true/false следующим условием 3) Можно хранить стандартно количество товара в модуле каталог, если используется, а флаг доступности задавать с помощью Доп. условия для логического значения поля, но оно будет работать только если у товара будет реально изменяться количество товара на складе. |
Цена |
Используется модулем Интернет-магазин, рассчитывается цена товара включая или исключая скидки. Формирование цен полностью зависит от настроек Цены на вкладке Основные в модуле экспорта. |
Валюта |
Используется модулем Валюты, в конструкторе просто выводится список валют для подстановки тегу, здесь ничего не конвертируется, не считается. Список валют берется из настроек 1C Битрикс: Настройки -> Валюты -> Список валют |
Мета-тег |
Мета-теги формируются модулем Инфоблоки, а модуль просто ищет их у элемента и подставляет в значение тега. Настраиваются шаблоны мета-тегов общие в настройках инфоблока и отдельно для каждого элемента в форме радактирования. Если шаблоны не настроены, то они будут пустые, тут желательно первым полем конструктора задать Название элемента, пустые значения модуль пропускает, тогда название запишется в xml-тег. |
Примеры настроек конструктора
Пример №1
Самый простой пример, когда, например, тегу <id> задано какое-то одно поле или свойство, в данном случае это просто поле ID элемента инфоблока, уникальный идентификатор.
Значение этого поля запишется в значение xml-тега в прайс-листе, но в зависимости от типа профиля для Яндекса или Google может быть не отдельным тегом, а как здесь в примере атрибутом id="16785", помимо тегов в прайс-листах могут быть еще и атрибуты.
<offer id="16785" available="true">
Пример №2
В данном случает у всех элементов в прайс-лист запишется последнее заданное поле XML_ID, т.е. все что встретится ниже заменит выше записанное.
Если XML_ID будет пустое, то запишется в прайс ID элемента.
<offer id="810" available="true">
Пример №3
Пример настроек xml-тега <description>, наверно самый сложный, составной тег.
Выше в примере №2 написано, если выбрано несколько полей, то записывается последнее, но бывают ситуации, когда какой-нибудь xml-тег можно записать в несколько экземпляров, а т.к. в профиле тег только один, можно доп. опцией хоть разбить его на несколько тегов, хоть склеить в один, из всех выбранных полей.
Так будет заполняться xml-тег <description> в прайс-листе склеенный в несколько экземпляров из разных полей и свойств.