*

stol

  • *
  • 28

Yandex Market

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

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

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

(здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
есть готовый модуль (или скриптик) для формирования XML файла Yandex Market ?
Вот пожалуйста немного мной доработанный для rubika
Код: (здесь есть ссылка, которая гостям не доступна зарегистрируйтесь или залогиньтесь)
<?
/**************************************************
* Скрипт ya-market.php для выгрузки товаров в формате YML для интернет-магазина на движке osCommerce 2.3
* Дата разработки: 25 июня 2011
* Разработчик: Володина Нина
// Скрипт распространяется по лицензии 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 );
  }
?>

« Последнее редактирование: 11 Март 2018 16:05:18 pm от Spido »