27.10.2018

Конструктор 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> в прайс-листе склеенный в несколько экземпляров из разных полей и свойств.



Возврат к списку

Имя *
Логин (мин. 3 символа)
E-mail *
*— обязательные для заполнения поля
Логин или e-mail
TUNING-SOFT.RU Разработка умных веб-сервисов