*

stol

  • *
  • 28

Yandex Market

есть готовый модуль (или скриптик) для формирования XML файла Yandex Market ?

Пока живого не видел, но думаю его можно сделать самому.

Выложил скрипт, требуется только доработка. Дерзайте =)
(здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)

(здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
есть готовый модуль (или скриптик) для формирования XML файла Yandex Market ?
Вот пожалуйста немного мной доработанный для rubika
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
<?
/**************************************************
* Скрипт ya-market.php для выгрузки товаров в формате YML для интернет-магазина на движке osCommerce 2.3
* Дата разработки: 25 июня 2011
* Разработчик: Володина Нина
* Сайт: www.codda.ru
// Скрипт распространяется по лицензии GNU.
// Вы можете использовать скрипт на свой страх и риск. За любые ошибки разработчики отвественности не несут.
**************************************************/
header('Content-type: application/xml');
header("Content-Type: text/xml; charset=utf-8");
$kurs=$currency_value[0];
define('DB_HOST', 'localhost');//Вписать сервер бд
define('DB_USER', 'xxx');//Вписать имя пользователя
define('DB_PASS', 'xxx');//Вписать пароль
define('DB_NAME', 'xxxx');//Вписать имя базы данных
$ctt = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
$db = mysql_select_db(DB_NAME) or die("Ошибка базы данных");
mysql_query ("SET NAMES 'utf8'");
#########################
# Начинаем генерировать XML
# переменные для заголовка
$cdate = date("Y-m-d H:i",time());
$csite = "http://xxx/";//Вписать адрес интернет-магазина
$cname = "xxx";//Вписать название интернет-магазина
$csite2 = $csite;
$cname2 = $cname;
$cdesc = "xxx";//Вписать описание интернет-магазина
#----------------------------------------------
$yandex=<<<END
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="$cdate">
<shop>
<name>$cname</name>
<company>$cdesc</company>
<url>$csite</url>

<currencies>
    <currency id="RUR" rate="1"/>
</currencies>
END;
$arr_cats=array();
#----------------------------------------------
# для Яндекса выводим все подкатегории
        $yandex .= "\n\n<categories>\n";
$tmp="
               select
                        c.categories_id as categoryID,
                        cd.categories_name as name,
                        c.parent_id as parent
                FROM
                        ваш префикс_categories as c,
                        ваш префикс_categories_description as cd
                where   c.categories_id = cd.categories_id AND cd.language_id=1
                ORDER BY
                        parent, name";
$res = mysql_query($tmp);
while ($rezzzz = mysql_fetch_array($res)){
                $rezzzz['name']=htmlspecialchars($rezzzz['name']);
                $fftt = "    <category id=\"".$rezzzz['categoryID']."\"";
                if($rezzzz['parent']>0)        $fftt .= " parentId=\"".$rezzzz['parent']."\"";
                $fftt.= ">".$rezzzz['name']."</category>\n";
                $yandex .= $fftt;
                $arr_cats[$rezzzz['categoryID']]=$rezzzz;
        }
        $yandex .= "</categories>\n";
#----------------------------------------------
$yandex .="\n<offers>\n";

#----- YANDEX ------
    $tmp="
        select
                p.products_id AS productID,
                p.products_price AS Price,
                i.image AS picture,
                p.products_status AS in_stock,
                pd.products_id,
                pd.products_name AS name,
                pd.products_description AS brief_description,
                pc.categories_id AS categoryID,
                pc.products_id
        FROM
                 ваш префикс_products AS p,
                 ваш префикс_products_description AS pd,
                 ваш префикс_products_images AS i,
                 ваш префикс_products_to_categories AS pc
        WHERE
                p.products_price>0
                AND pd.products_id=p.products_id
                AND pc.products_id=p.products_id
                AND p.products_status=1
                AND i.products_id = p.products_id
        ORDER BY name";

$res = mysql_query($tmp);

while ($tovar = mysql_fetch_array($res)) {

        $valuta="RUR";//изменить на нужную валюту
        $price=$tovar[Price];

        $price=intval($price);

        $description=htmlspecialchars(strip_tags($tovar[brief_description]));

        $tovar['name'] = htmlspecialchars($tovar['name']);

        #фотография
        if ($tovar['picture'] != "") {
        $src_file = $csite."images/products/large/".$tovar['picture'];
        $ppy = "<picture>".$src_file."</picture>";
        } else {
                $ppy = "";
        }

#----------------------------------------------
$yandex.=<<<END
    <offer id="$tovar[productID]" available="true">
      <url>{$csite}products.php?$tovar[productID]</url>
      <price>$price</price>
      <currencyId>$valuta</currencyId>
      <categoryId>$tovar[categoryID]</categoryId>
          $ppy
      <name>$tovar[name]</name>
      <description>$description</description>
    </offer>
END;
}

$yandex .= "</offers>\n</shop>\n</yml_catalog>\n";

#выводим, что нагенерили
echo $yandex;
#создаем и пишем в файл
if( file_exists( "yml.xml" ) )
  {chmod("yml.xml", 0755);
   if( !is_writeable( "yml/yml.xml" ) )
    {  die( "Нельзя записать в этот файл" );  }
  }
else
  {
   if( !touch( "yml/yml.xml" ) )
    {  die( "Нельзя создать файл" );  }
    $f = fopen( "yml/yml.xml" , "w+" );
    fwrite( $f , $yandex );
    fclose( $f );
  }
?>