Выгрузка товаров в Яндекс.Маркет. Часть 2

market.logoВ предыдущей статье , мы разобрали основы работы с библиотекой YMarket.  А точнее работу с основным классом, компонентами валют и категорий. В этой статье рассмотрим работу с предложениями.
Все файлы с классами предложений расположены в папке components. Для работы нужно будет подключать каждый файл с классом, кроме Offer.class.php. Он уже был подключен при подключении YMarket.class.php.

Обычное предложение
Класс Offer предназначен для работы с обычными предложениями товаров, которые подойдут к большинству товаров.
Конструктор этого класса имеет три обязательных параметра:

Offer Offer:: __construct(int $id, string $name, float $price)

Параметры:

  • $id – идентификатор предложения. Целое число;
  • $name – наименование предложения в виде текстовой строки;
  • $price – цена предложения в виде числа с плавающей точкой.

Для установки свойств предложений нужно использовать следующий синтаксис:

$offer->property = $value;

Где $offer – это объект класса Offer, property – это, устанавливаемое свойство, а $value – это значение этого свойства.
Класс Offer имеет достаточно много свойств. Все свойства описывать придется очень долго, поэтому опишу только небольшую часть общеупотребительных свойств:

  • id – идентификатор предложения;
  • name – наименование предложения в виде обычной текстовой строки;
  • price – цена предложения в виде числа с плавающей точкой;
  • picture – URL-путь к рисунку, которое будет отображаться рядом с предложением;
  • currencyId – идентификатор валюты, например RUR, UAH или USD;
  • categoryId – идентификатор категории в виде целого числа;
  • url – URL-адрес страницы с товаром;
  • vendor – производитель;
  • model – модель;
  • description – подробное описание товарного предложения;
  • delivery – элемент, обозначающий возможность доставить соответствующий товар. “false” данный товар не может быть доставлен(“самовывоз”).”true” товар доставляется на условиях, которые указываются в партнерском интерфейсе;
  • vendorCode – код товара (указывается код производителя);
  • local_delivery_cost – стоимость доставки данного товара в Своем регионе;
  • country_of_origin – элемент предназначен для указания страны производства товара;
  • available – статус доступности товара – в наличии/на заказ. Если false, то товар доступен только на заказ, если true, то товар имеется в наличии.

После того, как все свойства товарного предложения будут установлены, нужно добавить предложение в объект магазина с помощью метода add().

$ymarket->add($offer);

Книги
Для добавления предложения книжного товара, предназначен класс BookOffer. Этот класс является потомком класса Offer и наследует все его свойства. Кроме свойств предка, класс BookOffer добавляет свои свойства.

  • author – автор книжного произведения;
  • publisher – издательство;
  • series – серия;
  • year – год издания книги;
  • ISBN – код книги, если их несколько, то перечисляются через запятую;
  • volume – количество томов;
  • part – номер тома;
  • language – язык книги;
  • binding – переплет;
  • page_extent – количество страниц;
  • table_of_contents – текст оглавления.

Аудиокниги
Для добавления предложения аудиокниги, предназначен класс AudioBookOffer. Этот класс также является потомком класса Offer и наследует все его свойства. Кроме того, AudioBookOffer имеет следующие свойства:

  • author – автор произведения;
  • publisher – издательство;
  • series – серия;
  • year – год издания;
  • ISBN – код книги, если несколько, то указываются через запятую;
  • performed_by – исполнитель;
  • performance_type – тип адиокниги (радиоспектакль, произведение начитано, …);
  • language – язык произведения;
  • volume – номер тома;
  • part – номер части;
  • format – формат аудиокниги;
  • storage – носитель, в котором поставляется аудиокнига;
  • recording_length – время звучания задается в формате mm.ss (минуты.секунды);
  • table_of_contents – оглавление.

Музыкальная продукция
Для добавления музыкальной продукции, предназначен класс MusicOffer. Он как и все наследует все свойства класса Offer. А также имеет и свои:

  • artist – исполнитель;
  • title – наименование;
  • year – год;
  • media – носитель;

Видео продукция
Для добавления видео продукции, предназначен класс VideoOffer. Он тоже наследует свойства класса Offer. Вот его свои свойства:

  • title – название фильма;
  • starring – актеры;
  • director – режиссер;
  • originalName – оригинальное наименование;
  • country – страна;
  • year – год;
  • media – носитель.

Описание тура
Для предложение тура, существует класс TourOffer. Он наследует класс Offer и все его свойства. Имеет еще целую кучу своих свойств:

  • worldRegion – часть света;
  • country – страна;
  • region – курорт или город;
  • days – количество дней тура;
  • dataTour – даты заездов;
  • name – название отеля (в некоторых случаях наименование тура);
  • hotel_stars – звезды S отеля 5*****;
  • room – тип комнаты (SNG, DBL……);
  • meal – тип питания (All, HB……);
  • included – что включено в стоимость тура;
  • transport – транспорт;
  • description – описание тура.

Билеты на мероприятия
Для билетов есть класс TicketOffer. Он является потомком класса Offer и наследует все его свойства. Вот и его собственные:

  • name – наименование мероприятия;
  • place – зал;
  • hall_plan – ссылка на план здания;
  • date – дата и время сеанса. Указываются в формате ISO 8601: YYYY-MM-DDThh:mm;
  • is_premiere – признак премьерности мероприятии;
  • is_kids – признак детского мероприятия.

Теперь немного кода, по созданию и добавлению предложений с подробнейшими комментариями.

offers.php

<?php
 
//подключаем библиотеку YMarket
 
include_once 'YMarket/YMarket.class.php';
 
//создаем новый магазин
 
$market = new YMarket('Тестовый магазин для проверки работоспособности',
 
'test','http://www.web-junior.net');
 
//валюты: российский рубль и доллар США, курс которого
//будем узнавать по центрабанку
 
$market->add(new Currency('RUR', 1));
$market->add(new Currency('USD', 'CBRF'));
//добавляем категории
foreach($categories as $item){
$market->add(new Category(
$item->category_id, $item->name));
}
//хороший принтер
$tmp = new Offer(12341, 'Принтер', 700);
$tmp->url = "http://www.wb-junior.net";
$tmp->currencyId = 'USD';
$tmp->categoryId = 250;
$tmp->model = 'Color LaserJet 3000';
$tmp->vendorCode = 'Q7533A';
$tmp->description = YMarket::specialChars(
'A4, 64Mb, 600x600 dpi, USB 2.0, 29стр/мин ч/б / 15стр/мин цв,
лотки на 100л и 250л, плотность до 175г/м, до 60000 стр/месяц');
$tmp->delivery = 'true';
$market->add($tmp);
 
//книга - еще лучше
include_once 'YMarket/components/BookOffer.class.php';
$book = new BookOffer(123, 'Архитектура компьютера',100);
$book->currencyId = 'USD';
$book->categoryId = 3;
$book->picture = 'http://www.web-junior.net';
$book->delivery = 'true';
$book->author = 'Эндрю Таненбаум';
$book->publisher = 'ПИТЕР';
$book->year = '2005';
$book->ISBN = '0-13-095990-1,5-318-00298-6';
$book->volume = '1';
$book->part = '1';
$book->language = 'rus';
$book->description = YMarket::specialChars('Книга, вышедшая 
уже в четвертом издании, посвящена структурной организации 
компьютера. В ее основе лежит идея о том, что компьютер можно 
рассматривать как иерархию уровней, каждый из которых 
выполняет какую-либо определенную функцию.');
$market->add($book);
//параметры:
//-если первый установлен в true, то метод выведет готовый xml
//-если второй установлен в true, то xml будет сжат в формат gz
$market->generate(true, false);
?>

На этом заканчиваю. Если есть вопросы, то не стесняйтесь, задавайте их мне в комментариях.

Популярность: 8%


Интересное из других блогов:

2leep.com

И не забывайте комментировать статью.

Добавляйся в группу во вконтакте, чтобы самым первым узнавать все новости сайта

Отзывов: 6 на «Выгрузка товаров в Яндекс.Маркет. Часть 2»

  1. Автор: Adanedel, 8 июня 2010 в 08:59

    использует Firefox 3.5.9 Firefox 3.5.9 на Windows XP Windows XP

    скачал класс, почитал вроде интересно и полезно. опробую если не забуду отпишусь по результатам)

  2. Автор: Павел, 29 декабря 2010 в 15:38

    использует Opera 11.00 Opera 11.00 на Windows XP Windows XP

    Добрый день! Спасибо Вам за статью! Все работает, но вот что то не могу разобраться с выводом категорий.
    Вот код:

    1
    2
    3
    4
    
    foreach($categories as $item){
    $market->add(new Category(
    $item->category_id, $item->name));
    }

    Я так понял, что массив уже чем то должен быть заполенен, я не понимаю, какова его структура. Скажите пожалуйста чем? И Что такое $item->category_id и $item->name?

    • Автор: web-junior, 9 января 2011 в 22:51

      использует Firefox 3.6.12 Firefox 3.6.12 на Windows 7 Windows 7

      Здравствуйте.
      В конструктор класса Category передаются два параметра: уникальный идентификатор категории ($item->category_id) и имя категории ($item->name). Поэтому каждый элемент массива может быть объектом класс stdClass, который имеет два параметра category_id и name. К примеру, это может выглядеть так:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      
      //... здесь какой-то код
      $categories = array();
      for($i=1;$i<10;$i++){
      $item = new stdClass();
      	$item->category_id = $i;
      	$item->name = 'Name_'.$i;
      	$categories[] = $item;
      	unset($item);
      }
      //добавляем категории
      foreach($categories as $item){
      $market->add(new Category(
      $item->category_id, $item->name));
      }
      //... далее по коду
  3. Автор: Павел, 14 января 2011 в 10:04

    использует Opera 11.00 Opera 11.00 на Windows XP Windows XP

    web-junior, Благодарю Вас за помощь!

    • Автор: web-junior, 14 января 2011 в 16:57

      использует Firefox 3.6.13 Firefox 3.6.13 на Windows 7 Windows 7

      Пожалуйста! Обращайтесь ещё!

  4. Автор: Максим, 8 июля 2011 в 11:12

    использует Google Chrome 12.0.742.112 Google Chrome 12.0.742.112 на Windows XP Windows XP

    Спасибо за класс!
    Я только разбираюсь в маркете.
    Обратил внимание, что в категориях не хватает еще одного параметра “parentId” для возможности создания вложенных категорий.

RSS-лента комментариев.

Ваш отзыв

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Нажимая на кнопку "Добавить" вы принимаете правила комментирования