# Модификации

Для типа файла <mark style="background-color:red;">XML</mark> реализована загрузка модификаций

## Варианты загрузки

### 1. Когда в файле только модификации и из них создаем родительский товар

{% code lineNumbers="true" fullWidth="true" %}

```xml
<!--
    Стандартынй пример Yandex Yml
    shop/offers/offer - путь до товаров -> массив объектов offer
-->
<yml_catalog>
    <shop>
        <offers>
            <offer id="123" group_id="001">
                <name>ПЛАТЬЕ 001</name>
                <param name="Цвет">Чёрный</param>
                <price>2080</price>
                <quantity>8</quantity>
                <vendorCode>А123</vendorCode>
                <picture>https://site.ru/upload/А123.jpg</picture>
                <picture>https://site.ru/upload/А123_2.jpg</picture>
                <description>Платье-туника со спущенным рукавом - простой и комфортный выбор для повседневности.</description>
            </offer>
            <offer id="456" group_id="001">
                <name>ПЛАТЬЕ 001</name>
                <param name="Цвет">Белый</param>
                <price>2080</price>
                <quantity>10</quantity>
                <vendorCode>А456</vendorCode>
                <picture>https://site.ru/upload/А456.jpg</picture>
                <picture>https://site.ru/upload/А456_2.jpg</picture>
                <description>Платье-туника со спущенным рукавом - простой и комфортный выбор для повседневности.</description
            </offer>
        </offers>
    </shop>
<yml_catalog>
```

{% endcode %}

Нужно указать тег/аттрибут по которому будет объединение модификаций, в данном случае это у нас одинаковый аттрибут **@group\_id** его и указываем в сопоставлении полей **@group\_id -> Модификация \[modification]**, у нас сразу появилось поле куда мы будет его записывать, например **mod\_id** (рекмоендуем) (возможные опции: Артикул товара \[marking], Идентификатор товара CommerceML \[guid], Название товара \[name])

Т.к. родительских товаров в файле у нас нет, они будут создаваться из данных, которые имеются у модификаци, например название, описание (которое в модификациях хранить не нужно) и тд, то в соответствии мы укажем какие данные мы берем, чтобы система поняла, что эти данные мы записываем в родитльский товар, нужно отметить галочку <img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FfhFXaOzOIPKJBk7ppz4B%2Fimage.png?alt=media&#x26;token=115900a4-d003-4180-a3b9-84954d76cbea" alt="" data-size="original"> **"Для родит. товара"**, далее уже делаем соответствие

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FmTBY9fSJ4yMjja3lfP0w%2Fimage.png?alt=media&#x26;token=56e0db14-7c45-45f6-896b-f2c74a5f6b30" alt=""><figcaption></figcaption></figure></div>

<mark style="background-color:green;">В зеленом</mark> Как видим, что в (1) блоке у нас все данные для модификаций, в поле **названия товара** мы сделали сложение через "+" имени и цвета для модификации, так же сохранили для модификации цвет в доп. свойство, цену и ее остаток.

<mark style="background-color:blue;">В синем</mark> В блоке (2) данные для родительского товара, тут мы берем только 1 какую то картинку и описание

### 2. Когда в файле есть родительский товар и у него есть вложенность модификаций

<pre class="language-xml" data-line-numbers data-full-width="true"><code class="lang-xml">&#x3C;!--
    Нестандартный пример XML
    shop/offers/offer - путь до товаров -> массив объектов offer
-->
&#x3C;yml_catalog>
    &#x3C;shop>
        &#x3C;offers>
            &#x3C;offer id="001">
                &#x3C;name>ПЛАТЬЕ 001&#x3C;/name>
                &#x3C;price>2080&#x3C;/price>
                &#x3C;vendorCode>А123&#x3C;/vendorCode>
                &#x3C;picture>https://site.ru/upload/А123.jpg&#x3C;/picture>
                &#x3C;picture>https://site.ru/upload/А123_2.jpg&#x3C;/picture>
                &#x3C;description>Платье-туника со спущенным рукавом - простой и комфортный выбор для повседневности.&#x3C;/description>
                &#x3C;variant id="123">
<strong>                    &#x3C;quantity>3&#x3C;/quantity>
</strong>                    &#x3C;barcode>2000000116679&#x3C;/barcode>
                    &#x3C;param name="Размер">48&#x3C;/param>
                &#x3C;/variant>
                &#x3C;variant id="456">
                    &#x3C;quantity>10&#x3C;/quantity>
                    &#x3C;barcode>2000000116686&#x3C;/barcode>
                    &#x3C;param name="Размер">50&#x3C;/param>
                &#x3C;/variant>
            &#x3C;/offer>
        &#x3C;/offers>
    &#x3C;/shop>
&#x3C;yml_catalog>
</code></pre>

Нужно в параметре **"Путь до модификаций внутри товара"** указать **variant**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FJgjwIvNPAoneODbRMPIb%2Fimage.png?alt=media&#x26;token=dd94bf82-207f-4e4c-b7a4-ed36851eb8c7" alt=""><figcaption></figcaption></figure></div>

Нужно указать тег/аттрибут по которому будет объединение модификаций, в данном случае это у нас одинаковый аттрибут **vendorCode** (который находится выше по xml структуре) его и указываем в сопоставлении полей **../vendorCode -> Модификация \[modification]**, у нас сразу появилось поле куда мы будет его записывать, например **mod\_id** (рекмоендуем) (возможные опции: Артикул товара \[marking], Идентификатор товара CommerceML \[guid], Название товара \[name])

Т.к. мы указали путь к модификациям внутри товара, то система будет использовать цикл внутри них, по структуре видно чтобы указать имя у товара, которое находится выше по стурктуре в xpath мы используем `../` (перейти на уровень выше).

После указания соответствия для модификаций, мы сопоставляем данные для род. товара, чтобы система поняла, что эти данные мы записываем в родитльский товар, нужно отметить галочку <img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FfhFXaOzOIPKJBk7ppz4B%2Fimage.png?alt=media&#x26;token=115900a4-d003-4180-a3b9-84954d76cbea" alt="" data-size="original"> **"Для родит. товара"**, далее уже делаем соответствие

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FlsIIbUMgkjm7KkZa8dpD%2Fimage.png?alt=media&#x26;token=34a60504-0147-4b39-8fe3-de1c27b90102" alt=""><figcaption></figcaption></figure></div>

<mark style="background-color:green;">В зеленом</mark> Как видим, что в (1) блоке у нас все данные для модификаций, в поле **названия товара** мы сделали сложение через "+" имени и размера для модификации, так же сохранили для модификации размер в доп. свойство, цену, ее остаток и др данные.

<mark style="background-color:blue;">В синем</mark> В блоке (2) данные для родительского товара, тут мы берем все картинки, описание и др данные
