Наш сервис позволяет автоматизировать публикацию (обновление) прайс-листа на промо-сайте.
Для этого необходимо подготовить прайс-лист в формате YML (формат Яндекс.Маркета).
Мы поддерживаем работу с двумя форматами
1) YML в формате - <vendor> и <model> (товары в других форматах YML не поддерживаются).
2) Расширенный стандарт - centersprice: добавлено несколько элементов для более полного использования возможностей системы CenterS.
Описание YML формата для системы CenterS
XML header
Это стандартный XML-заголовок со ссылкой на файл описания формата. Заголовок должен начинаться с первой строки, с нулевого символа.
В поле encoding нужно указать кодировку, например: encoding="windows-1251". Допустимые кодировки: "windows-1251","koi8-r","iso-8859-5","x-cp866","x-mac-cyrillic","utf-8".
Пример:
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog>
Это корневой элемент XML-документа (должен быть один и только один).
Атрибут date элемента <yml_catalog> должен соответствовать дате и времени генерации файла и иметь формат YYYY-MM-DD hh:mm.
Пример:
<yml_catalog date="2011-02-01 10:00">
...
</yml_catalog>
<shop>
Элемент <shop> содержит описание компании и её товарных предложений.
Компания описывается следующими элементами:
<company> Полное наименование компании (используется для внутренней идентификации).
<url> URL главной страницы сайта компании
Пример:
<shop>
<company>Представительство компании NUVICO в России</company>
<url>http://www.nuvico.ru</url>
...
</shop>
<currencies>
Элемент <currencies> задает список курсов валют магазина. Каждая из валют описывается отдельным элементом <currency>.
Данные о ценах принимаются в рублях (RUR или RUB), гривнах (UAH), долларах (USD) и евро (EUR).
Если в вашем YML-файле не задан курс для отображаемой валюты (параметр rate), то используется текущий курс ЦБ РФ.
Пример:
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="29.67"/>
</currencies>
<categories>
В элементе <categories> содержится список категорий магазина. Каждая категория описывается отдельным элементом <category>.
Описание категории должно включать ее идентификатор (параметр id - уникальное целое положительное число) и для подкатегорий - идентификатор категории более высокого уровня (элемент <parentId>).
Если элемент <parentId> не указан или равен 0, то категория считается корневой.
Пример:
<categories>
<category id="2">Системы видеонаблюдения</category>
<category id="28" parentId="2">Цветные камеры наблюдения</category>
<category id="51" parentId="28">Скоростные купольные камеры наблюдения</category>
</categories>
<offers>
В элементе <offers> содержится список товарных предложений. Каждое товарное предложение описывается отдельным элементом <offer>.
Обязательными параметрами элемента <offer> являются id (идентификатор - уникальное целое положительное число) и type (допустимое значение - только vendor.model).
Элементы, входящие в <offer>:
<url> - URL страницы товара (в настоящее время не используется в системе CenterS, но возможно будет использовано в ближайшем будущем).
<price> - Цена, по которой данный товар можно приобрести. Цена товарного предложения округляется, формат, в котором она отображается, зависит от настроек пользователя.
<currencyId> - Идентификатор валюты товара - см. элемент currency.
<categoryId> - Идентификатор категории товара, которое задано в разделе categories.
<picture> - Ссылка на картинку соответствующего товарного предложения (в настоящее время не используется в системе CenterS, но возможно будет использовано в ближайшем будущем).
<model> - Название модели.
<description> - Описание товарного предложения.
<vendor> - Производитель или брэнд.
<country_of_origin> - страна производства товара.
Обязательными элементами являются: price, currencyId, categoryId, model, description
Пример:
<offers>
<offer id="52" type="vendor.model">
<url>http://www.nuvico.ru/product_detail52.htm</url>
<price>1628</price>
<currencyId>USD</currencyId>
<categoryId>51</categoryId>
<picture>http://www.nuvico.ru/sd_z18_26p.jpg</picture>
<typePrefix>Скоростная купольная камера наблюдения</typePrefix>
<vendor>nuvico</vendor>
<model>SD-Z18P-PHW</model>
<description>1/4" CCD, 470 ТВЛ, скоростная купольная камера, 18X трансфокатор с автоирисом (f=4.1 - 73.8 мм),
12Х цифровое увеличение, день - ночь (ИК режекторный фильтр), всепогодная, непрерывный разворот 360, предустановки,
интерфейс RS-485, 24В переменного тока, корпус уличного исполнения с кронштейном для крепления на стену.
</description>
<country_of_origin>США</country_of_origin>
</offer>
...
</offers>
Пример YML прайс-листа в формате и с комментариями
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<!-- -->
<yml_catalog date="2011-02-01 10:00">
<shop>
<!-- -->
<company>Представительство компании NUVICO в России</company>
<url>http://www.nuvico.ru</url>
<!-- -->
<!-- -->
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="29.67"/>
</currencies>
<!-- -->
<categories>
<category id="2">Системы видеонаблюдения</category>
<category id="28" parentId="2">Цветные камеры наблюдения</category>
<category id="51" parentId="28">Скоростные купольные камеры наблюдения</category>
</categories>
<!-- -->
<offers>
<!-- -->
<offer id="52" type="vendor.model">
<url>http://www.nuvico.ru/product_detail52.htm</url>
<price>1628</price>
<currencyId>USD</currencyId>
<categoryId>51</categoryId>
<picture>http://www.nuvico.ru/sd_z18_26p.jpg</picture>
<typePrefix>Скоростная купольная камера наблюдения</typePrefix>
<vendor>nuvico</vendor>
<model>SD-Z18P-PHW</model>
<description>1/4" CCD, 470 ТВЛ, скоростная купольная камера, 18X трансфокатор с автоирисом (f=4.1 - 73.8 мм),
12Х цифровое увеличение, день - ночь (ИК режекторный фильтр), всепогодная, непрерывный разворот 360, предустановки,
интерфейс RS-485, 24В переменного тока, корпус уличного исполнения с кронштейном для крепления на стену.
</description>
<country_of_origin>США</country_of_origin>
</offer>
...
</offers>
</shop>
</yml_catalog>
Описание расширенного стандарта - centersprice
От вышеописанного формата этот формат отличается:
- В заголовке стоит ссылка на dtd таблицу price.dtd
- Элементы <yml_catalog> и <shop> объеденены и заменены элементом <pricelist>.
- Элементу <pricelist> добавлен необязательный параметр id, в который заносится идентификатор компании в системе CenterS.
- Элементу <pricelist> добавлен необязательный элемент <comment>, который печатается на каждом парциальном прайс-листе и должен отражать вопросы поставки и оплаты для всего прайс-листа (например, "Поставка со склада в Москве. Возможна доставка в любую точку России").
- Элементу <offer> добавлены необязательные элементы <price2> и <price3> для занесения дилерской и оптовой цен.
- Элементу <offer> добавлены необязательные элементы <comment1> и <comment2> для занесения дополнительной информации о товаре.
<comment1> - короткая информация коммерческого характера (например, "Акция! Снижение цены!").
<comment2> - информация технического характера (например, "Поставляется по заказу").
Пример прайс-листа в расширенном формате с комментариями
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE pricelist SYSTEM "price.dtd">
<!-- -->
<pricelist date="2011-02-01 10:00" id="5574">
<!-- -->
<company>Представительство компании NUVICO в России</company>
<url>http://www.nuvico.ru</url>
<!-- -->
<!-- -->
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="29.67"/>
</currencies>
<!-- -->
<categories>
<category id="2">Системы видеонаблюдения</category>
<category id="28" parentId="2">Цветные камеры наблюдения</category>
<category id="51" parentId="28">Скоростные купольные камеры наблюдения</category>
</categories>
<!-- -->
<offers>
<!-- -->
<offer id="52" type="vendor.model">
<url>http://www.nuvico.ru/product_detail52.htm</url>
<price>1628</price>
<price1>1562</price1>
<price2>1418</price2>
<currencyId>USD</currencyId>
<categoryId>51</categoryId>
<picture>http://www.nuvico.ru/sd_z18_26p.jpg</picture>
<typePrefix>Скоростная купольная камера наблюдения</typePrefix>
<vendor>nuvico</vendor>
<model>SD-Z18P-PHW</model>
<description>1/4" CCD, 470 ТВЛ, скоростная купольная камера, 18X трансфокатор с автоирисом (f=4.1 - 73.8 мм),
12Х цифровое увеличение, день - ночь (ИК режекторный фильтр), всепогодная, непрерывный разворот 360, предустановки,
интерфейс RS-485, 24В переменного тока, корпус уличного исполнения с кронштейном для крепления на стену.
</description>
<country_of_origin>США</country_of_origin>
<comment1>Специальная цена!</comment1>
<comment2>В 2011 году снимается с производства</comment2>
</offer>
...
</offers>
<comment>Поставка со склада в Москве. Возможна доставка в любую точку России</comment>
</pricelist>
Дополнительные требования к содержимому прайс-листа
Для правильного занесения прайс-листа должны выполняться следующие требования к его содержанию:
- Параметр id в элементе <category> должен быть уникальным среди всех <category>.
- Параметр parentId в элементе <category> должен быть равен параметру id какой-либо <category>.
- Элементы <category> образуют структуру, известную как дерево, которое не должно содержать циклов по параметру parentId.
Этого легко добиться, если "родительские" <category> (те на которые указывает параметр parentId)
будут предшествовать "дочерним" (тем которые содержат параметр parentId).
- Параметр id в элементе <offer> должен быть уникальным среди всех <offer>.
- Параметр categoryId в элементе <offer> должен быть равен параметру id какой-либо <category>.
- Элементы <category> не должны быть пустыми, т.е. должны иметь "дочернии" <category> или содержать товары.
- В элементе <category> не должны быть одновременно "дочернии" <category> и товары.
Справочная информация для программиста
Структура XML файла полностью описывается соответствующей таблицей DTD. Поэтому приведё ссылки на нужные таблицы:
таблица для YML (формат Яндекс.Маркета) приведена здесь,
таблица для YML подмножества, которое используется в системе CenterS:
<!ELEMENT yml_catalog (shop)>
<!ATTLIST yml_catalog
date CDATA #REQUIRED>
<!ELEMENT shop (company, url, currencies, categories, offers)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT currencies (currency+)>
<!ELEMENT currency EMPTY>
<!ATTLIST currency
id (RUR|RUB|USD|EUR) #REQUIRED
rate CDATA "1">
<!ELEMENT categories (category+)>
<!ELEMENT category (#PCDATA)>
<!ATTLIST category
id CDATA #REQUIRED
parentId CDATA #IMPLIED>
<!ELEMENT offers (offer+)>
<!ELEMENT offer (url, price,currencyId, categoryId, picture?, typePrefix?, vendor, model, country_of_origin?)>
<!ATTLIST offer
id CDATA #IMPLIED
type (vendor.model) #IMPLIED
available (true | false) #IMPLIED>
<!ELEMENT url (#PCDATA)>
<!ELEMENT picture (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT currencyId (#PCDATA)>
<!ELEMENT categoryId (#PCDATA)>
<!ELEMENT typePrefix (#PCDATA)>
<!ELEMENT vendor (#PCDATA)>
<!ELEMENT model (#PCDATA)>
<!ELEMENT country_of_origin (#PCDATA)>
таблица для формата centersprice приведена :
<!ELEMENT pricelist (company?, url?, currencies?, categories, offers, comment?)>
<!ATTLIST pricelist
id CDATA #REQUIRED
date CDATA #REQUIRED>
<!ELEMENT currencies (currency+)>
<!ELEMENT currency EMPTY>
<!ATTLIST currency
id (RUR|RUB|USD|EUR) #REQUIRED
rate CDATA "1">
<!ELEMENT categories (category+)>
<!ELEMENT category (#PCDATA)>
<!ATTLIST category
id CDATA #REQUIRED
parentId CDATA "0" #IMPLIED>
<!ELEMENT offers (offer+)>
<!ELEMENT offer (url?, picture?, categoryId, model, typePrefix?, vendor?, country?, currencyId,
price, price1?, price2?, description, country_of_origin?, comment1?, comment2?)>
<!ATTLIST offer
id CDATA "0"
type CDATA "vendor.model">
<!ELEMENT url (#PCDATA)>
<!ELEMENT picture (#PCDATA)>
<!ELEMENT categoryId (#PCDATA)>
<!ELEMENT model (#PCDATA)>
<!ELEMENT typePrefix (#PCDATA)>
<!ELEMENT vendor (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT price1 (#PCDATA)>
<!ELEMENT price2 (#PCDATA)>
<!ELEMENT currencyId (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT country_of_origin (#PCDATA)>
<!ELEMENT comment1 (#PCDATA)>
<!ELEMENT comment2 (#PCDATA)>
<!ELEMENT comment (#PCDATA)>
|