Импорт данных в формате XML
Уважаемые рекламодатели, владельцы веб-сайтов и интернет магазинов.
Сообщаем вам о новой возможности обновления ваших товарных позиций - импорте данных
посредством формата XML.
Данная услуга позволит максимально упростить обновление данных и минимизировать задержку
между обновлением информации на вашем сайте и ее отражением на нашем проекте.
Процедура подключения проста, и не доставит веб-мастеру особых хлопот.
Достаточно создать скрипт генерирущий XML файл соответствующего формата(см.ниже),
и передать нам ссылку на него.
Пример экпортируемого файла:
|
<?xml version="1.0" encoding="windows-1251"?>
<shop>
<companyId>ID компании</companyId>
<companyName>Название фирмы</companyName>
<defaultCurrency>USD</defaultCurrency>
<currencies>
<currency id="KZT" rate="1" />
<currency id="USD" rate="130" />
</currencies>
<offers>
<offer id="1" type="vendor.model">
<model>S-775 Intel Core 2 Duo E6300 1.8GHz 1066MHz 2MB Conroe BOX</model>
<priceRetail>240</priceRetail>
<priceWholesale>230</priceWholesale>
<currencyId>USD</currencyId>
<note>гар. 3года</note>
<categoryId>cpu</categoryId>
</offer>
<offer id="2" type="vendor.model">
<model>Asus P5LD2 / Intel 945P / 4*DDR2 / 1*PCI-E-16 / SATA-2 / SB8 / Lan 1Gb / ATX</model>
<priceRetail>130</priceRetail>
<priceWholesale>115</priceWholesale>
<currencyId>USD</currencyId>
<note>new!</note>
<categoryId>mainboards</categoryId>
</offer>
<offer id="3" type="vendor.model">
<model>Kingston 512Mb 400MHz PC3200 CL3 KVR400X64C3 Box</model>
<priceRetail>62</priceRetail>
<priceWholesale>59</priceWholesale>
<currencyId>USD</currencyId>
<note>lifetime warranty</note>
<categoryId>ram</categoryId>
</offer>
</offers>
</shop> |
Внимание!!!
Каждый товар должен иметь привязку к категории на сайте - параметр <categoryId>,
полный список категорий Вы можете найти по данной ссылке: http://www.pricelist.kz/xml/categories_list.php.
Каждый товар должен иметь хотя бы одну ненулевую цену, товары
с двумя нулевыми ценами ингорируются. Название товара не должно превышать 1024 символа, примечание не более 128 символов.
Для удобства разработчиков приведем пример скипта генерации XML на языке PHP,
данный пример не является обязательным.
<?php //соединение с базой данных mysql_connect("localhost", "login", "password") or die("Unable to connect to SQL server"); mysql_select_db("database") or die("Unable to select database");
//внимание!!! создадим ассоциативный массив в котором пропишем соответствие //своих категорий товаров, категориям сайта pricelist.kz //массив состоит из элементов: //"Категория товаров в вашей БД" => "Alias соответсвующей категории на pricelist.kz" $categories = Array( "Процессоры(CPU)" => "cpu", "Материнские платы(MainBoards)" => "mainboards", "Модули памяти(RAM)" => "ram", "Видеокарты" => "videocards", "Жесткие диски(HDD)" => "hdd", "CD-ROM, CDRW, DVD-RW" => "optical-drives", "Другие товары" => "other", "Настольный компьютеры(Desktop)" => "desktop-pc", "Ноутбуки" => "notebooks" );
//на случай если часть товаров хранится не в соответствующих категориях //например TV-tuner хранится в видеокартах, Fan for CPU в процессорах, //чехол для фотокамеры в разделе фотокамеры итп //массив исключений "регулярное выражение" => "Alias соответствующей категории на pricelist.kz" $exeptions_arr = Array ( "TV-Tuner" => "tv-tuner", "FAN" => "coolers", "SoDIMM" => "notebook-parts", "чехол|футляр" => "camera-bags" );
$usd_rate = 130;//получить курс из специального справочника
//начало генерации XML $xml_text = "<?xml version=\"1.0\" encoding=\"windows-1251\"?> <shop> <companyId>ID компании</companyId> <companyName>Название компании</companyName>
<defaultCurrency>USD</defaultCurrency>
<currencies> <currency id=\"KZT\" rate=\"1\" /> <currency id=\"USD\" rate=\"$usd_rate\" /> </currencies>
<offers> ";
//получим список товаром отсортированный по названиям категорий и названиям товаров //подразумевается что товары и категории хранятся в отдельных связанных таблицах $res = mysql_query(" SELECT products.*, categories.CategoryName FROM products INNER JOIN categories ON categories.CategoryID = products.CategoryIDRef WHERE products.ProductIDRef = 0 AND products.ProductPrice > 0 AND products.ProductStatus > 0 ORDER BY categories.CategoryName, products.ProductName ") or die("error on getting products: ".mysql_error());
//цикл по записям while($row = mysql_fetch_object($res)){ //внимание!!! название товара не должно превышать 1024 символа //примечание не более 128 символов //во избежание проблем проведем кодирование возможных HTML сущностей $ProductName = htmlspecialchars(substr($row->ProductName, 0 , 1024)). (strlen($row->ProductName) > 1024 ? "..." : "" ); $ProductNote = htmlspecialchars(substr($row->ProductNote, 0 , 128)). (strlen($row->ProductNote) > 128 ? "..." : "" ); //атрибут id является необязательным, введен для удобства отладки и поиска ошибок //атрибут type="vendor.model" является обязательным, нужен для будущего усовершенствования системы $xml_text .= " <offer id=\"$row->ProductID\" type=\"vendor.model\">\n"; $xml_text .= " <model>".$ProductName."</model>\n"; $xml_text .= " <priceRetail>$row->ProductPrice</priceRetail>\n"; $xml_text .= " <priceWholesale>$row->ProductOptPrice</priceWholesale>\n"; $xml_text .= " <currencyId>USD</currencyId>\n"; $xml_text .= " <note>".$ProductNote."</note>\n"; //выберем соответствующий alias для текущей категории товара if (isSet($categories[$row->CategoryName])){ $c_alias = $categories[$row->CategoryName]; } else { //товар с неопределенной категорией попадает в раздел "Прочее" $c_alias = "other"; } //проверим не подходит ли данный товар под одно из исключений if (isSet($exeptions_arr)) if (is_array($exeptions_arr)) foreach ($exeptions_arr as $pattern => $c_id){ //если подходит, меняем текущую категорию, на категорию из исключений if (eregi($pattern, $ProductName)){ $c_alias = $c_id; } }//foreach $xml_text .= " <categoryId>".$c_alias."</categoryId>\n";//typePrefix $xml_text .= " </offer>\n"; } $xml_text .= " </offers> </shop> "; echo $xml_text; ?>
|
Ниже приведена форма тестирующая правильность сгенерированного Вами XML файла.
По всем возникающим вопросам пишите на адрес info@pricelist.kz
на главную страницу
|
|
 |
 |