Внимание!!!
Теперь Вы можете автоматически обновлять свои товарные позиции.
Читать подробнее.


IT-news


обзоры


барахолка


компании


реклама

Импорт данных в формате XML

Уважаемые рекламодатели, владельцы веб-сайтов и интернет магазинов.
Сообщаем вам о новой возможности обновления ваших товарных позиций - импорте данных посредством формата XML.

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

Процедура подключения проста, и не доставит веб-мастеру особых хлопот.
Достаточно создать скрипт генерирущий XML файл соответствующего формата(см.ниже), и передать нам ссылку на него.


Пример экпортируемого файла:

<?xml version="1.0" encoding="windows-1251"?>
<shop>
    <!-- обязательный параметр, номер фирмы(saler_id) в каталоге http://www.pricelist.kz/?companies=yes -->
    <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>
            <!-- обязательный параметр, alias категории товара -->
            <!-- полный список: http://www.pricelist.kz/xml/categories_list.php -->
            <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->ProductName1024)).
            (
    strlen($row->ProductName) > 1024 "..." "" );
        
    $ProductNote htmlspecialchars(substr($row->ProductNote128)).
            (
    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

    на главную страницу

  • © 2005-2007 pricelist.kz
    По всем вопросам писать: info@pricelist.kz