Выгрузка товаров в Яндекс.Маркет. Часть 2
В предыдущей статье , мы разобрали основы работы с библиотекой 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И не забывайте комментировать статью.
Добавляйся в группу во вконтакте, чтобы самым первым узнавать все новости сайта
Автор: Adanedel, 8 июня 2010 в 08:59
используетскачал класс, почитал вроде интересно и полезно. опробую если не забуду отпишусь по результатам)
Автор: Павел, 29 декабря 2010 в 15:38
используетДобрый день! Спасибо Вам за статью! Все работает, но вот что то не могу разобраться с выводом категорий.
Вот код:
Я так понял, что массив уже чем то должен быть заполенен, я не понимаю, какова его структура. Скажите пожалуйста чем? И Что такое $item->category_id и $item->name?
Автор: web-junior, 9 января 2011 в 22:51
используетЗдравствуйте.
В конструктор класса Category передаются два параметра: уникальный идентификатор категории ($item->category_id) и имя категории ($item->name). Поэтому каждый элемент массива может быть объектом класс stdClass, который имеет два параметра category_id и name. К примеру, это может выглядеть так:
Автор: Павел, 14 января 2011 в 10:04
используетweb-junior, Благодарю Вас за помощь!
Автор: web-junior, 14 января 2011 в 16:57
используетПожалуйста! Обращайтесь ещё!
Автор: Максим, 8 июля 2011 в 11:12
используетСпасибо за класс!
Я только разбираюсь в маркете.
Обратил внимание, что в категориях не хватает еще одного параметра “parentId” для возможности создания вложенных категорий.