# Формат YML (Yandex Market Language)

Один из форматов выгрузки товаров в сервис.

Это стандарт, разработанный Яндексом для принятия и размещения информации в базе данных Яндекс.Маркета. YML основан на стандарте XML. Единый формат представления данных позволяет быстро и качественно обрабатывать предоставляемую магазинами информацию о товарах и услугах.

Настройте экспорт информации о товарах и услугах из вашей базы данных в YML-файл или используйте CMS со встроенными возможностями экспорта данных в формат YML.

# Процесс подключения

Разместите файл на сайте вашего магазина по URL, и укажите его при добавлении магазина в SocPoster. YML-файл регулярно скачивается роботом и обновленные данные импортируются в каталог товаров вашего сообщества во ВКонтакте.

# Требования к YML-файлу

Стандарт YML не допускает использования в текстовых данных непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением символов с кодами 9, 10, 13. Разрешены — табуляция, перевод строки, возврат каретки.). Это требует обязательной замены некоторых символов на эквивалентные им символьные коды:

Символ в тексте Код для YML-файла
" "
& &
> >
< &lt;
' &apos;

Обработка символов

В большинстве случаем сервис самостоятельно преобразует запрещенные символы и уберет html теги, т.к. они не действуют во ВКонтакте. Но все же мы не рекомендуем использовать html теги в элементах yml. В редких случаях это мешает обработке файла.

Если в файле присутствуют html теги, то для надежности, можете обернуть их в конструкцию <![CDATA[ ]]>. Это необязательно. Пример:

<description>
<![CDATA[Здесь должно быть <b>описание товара</b>, если в нем есть HTML теги.]]>
</description>

# Описание элементов и пример файла

  • Подробно о структуре YML можно прочитать на сайте Яндекса здесь
  • Пример YML файла на сайте Яндекса здесь
  • Еще один пример структуры YML файла здесь

В демонстрационном файле использованы случайные данные - они не подходят для выгрузки, только как демонстрация структуры файла.

# Несколько категорий для товара

В стандарте YML не предусмотрено использование нескольких категорий, но SocPoster делает исключение для этого правила и обрабатывает все тэги <categoryId> указанные для товара. Пример:

<categories>
  <category id="1">Просто категория</category>
  <category id="3">Еще одна категория</category>
  <category id="4" parentId="1">Дочка просто категории</category>
  <category id="5">Обычная категория</category>
  <category id="12">Категория</category>
</categories>
 
<offer id="1" available="true">
    <url>
        http://socposter.ru/
    </url>
    <price>100</price>
    <currencyId>RUB</currencyId>
    <categoryId>1</categoryId>
    <categoryId>3</categoryId>
    <categoryId>5</categoryId>
    <categoryId>12</categoryId>
    <picture>
        http://socposter.ru/product-img1.jpg
    </picture>
    <picture>
        http://socposter.ru/product-img2.jpg
    </picture>
    <name>Название товара</name>
    <vendor>Производитель</vendor>
    <description>
       Описание.
    </description>
    <param name="Название параметра 1">параметр 1</param>
    <param name="Название параметра 2">параметр 2</param>
</offer>