Скрипт автоматической выгрузки в Ядекс маркет из Virtuemart

Чтобы упростить задачу подключения Интернет магазина на cms Joomla 1.5.26 и Virtuemart версии 1.1.9 к Yandex Market, напишем скрипт автоматической выгрузки прайса из Virtuemart (виртумарт) в Яндекс маркет, в формате .YML

Скрипт выгрузки Virtuemart в Яндекс маркет

script.yml

Создадим в корне вашего интернет магазина, файл с названием script.yml, со следующим содержанием:

<?php

include ‘configuration.php’;
$cfg = new JConfig();

$cfg_name = $cfg->fromname;

$cfg_company = $cfg->sitename;

//Адрес URL главной страницы магазина без http://
$cfg_url = ‘gutsite.ru’;

$description_template = ‘{product_desc}’;

// Ставка за клик (в центах)
$bid = ’11’;

$hostname                 = $cfg->host;
$username                 = $cfg->user;
$password                 = $cfg->password;
$dbName                 = $cfg->db;
$category                 = $cfg->dbprefix.»vm_category»;
$category_xref             = $cfg->dbprefix.»vm_category_xref»;
$userstable             = $cfg->dbprefix.»vm_product»;
$pricetable             = $cfg->dbprefix.»vm_product_price»;
$product_category_xref     = $cfg->dbprefix.»vm_product_category_xref»;

mysql_connect($hostname,$username,$password) OR DIE(«Не могу создать соединение «);
mysql_select_db($dbName) or die(mysql_error());

// Исправьте, если у вас другая кодировка в БД например windows-1251
mysql_query(‘set names utf8’);

echo»<?xml version=\»1.0\» encoding=\»utf-8\»?>\n»;
echo»<!DOCTYPE yml_catalog SYSTEM \»shops.dtd\»>\n»;
echo»<yml_catalog date=\»»;
echo date(‘Y-m-d H:i’);
echo»\»>\n»;
echo»<shop>\n»;
echo»<name>$cfg_name</name>\n»;
echo»<company>$cfg_company</company>\n»;
echo»<url>$cfg_url</url>\n»;

// список валют, приравненых к курсу ЦБРФ
echo»<currencies>\n»;
echo»<currency  id=\»RUR\» rate=\»1\»/>\n»;
echo»<currency  id=\»USD\» rate=\»CBRF\»/>\n»;
echo»<currency  id=\»EUR\» rate=\»CBRF\»/>\n»;
echo»</currencies>\n»;

// Категории
echo»<categories>\n»;
$query_cat = «SELECT * FROM $category_xref»;
$res_cat = mysql_query($query_cat) or die(mysql_error());
$rw=1;
while ($row_cat=mysql_fetch_array($res_cat)) {
$cat_parent_id=$row_cat[‘category_parent_id’];
$cat_child_id=$row_cat[‘category_child_id’];
$query2 = «SELECT category_name FROM $category WHERE category_id=».$row_cat[‘category_child_id’];
$res_cat1 = mysql_query($query2) or die(mysql_error());
$name_cat=mysql_fetch_array($res_cat1);
$cat_name=$name_cat[‘category_name’];
if ($cat_parent_id==0) {
echo»<category id=\»».$cat_child_id.»\»>».$cat_name.»</category>\n»;
}
else {
echo»<category id=\»».$cat_child_id.»\» parentId=\»».$cat_parent_id.»\»>».$cat_name.»</category>\n»;
}
$rw++;
}
echo»</categories>\n»;

// Описание товаров вашего интернет магазина
echo»<offers>\n»;

$tb_product                 = $cfg->dbprefix.»vm_product»;
$tb_manufacturer            = $cfg->dbprefix.»vm_manufacturer»;
$tb_product_mf_xref         = $cfg->dbprefix.»vm_product_mf_xref»;
$tb_category                = $cfg->dbprefix.»vm_category»;
$tb_product_category_xref    = $cfg->dbprefix.»vm_product_category_xref»;
$tb_price                    = $cfg->dbprefix.»vm_product_price»;

$query = «
SELECT
$tb_product.product_id,
$tb_product.product_name,
$tb_manufacturer.mf_name,
$tb_manufacturer.manufacturer_id,
$tb_category.category_name,
$tb_category.category_id,
$tb_product_category_xref.category_id,
$tb_price.product_price,
$tb_product.product_sku,
$tb_product.product_in_stock,
$tb_product.product_unit,
$tb_product.product_full_image,
$tb_product.product_s_desc,
$tb_product.product_weight
FROM
($tb_product_category_xref
RIGHT JOIN ($tb_price
RIGHT JOIN (($tb_product_mf_xref
RIGHT JOIN $tb_product
ON $tb_product_mf_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_manufacturer
ON $tb_product_mf_xref.manufacturer_id = $tb_manufacturer.manufacturer_id)
ON $tb_price.product_id = $tb_product.product_id)
ON $tb_product_category_xref.product_id = $tb_product.product_id)
LEFT JOIN $tb_category
ON $tb_product_category_xref.category_id = $tb_category.category_id
WHERE $tb_product.product_publish=’Y’
«;

$row = d2a($query);
$product_log = Array();
for($i=0;$i<count($row);$i++) {
if (!in_array($row[$i][‘product_id’],$product_log) AND ($row[$i][‘product_price’])) {
$product_log[] = $row[$i][‘product_id’];

$url=»http://$cfg_url/index.php?page=shop.product_details&amp;flypage=shop.flypage&amp;option=com_virtuemart&amp;product_id=».$row[$i][‘product_id’];
//$url=»http://$cfg_url/client?page=shop.product_details&flypage=flypage-ask.tpl&product_id=».$row[$i][‘product_id’].»&category_id=».$row[$i][‘category_id’].»&manufacturer_id=».$row[$i][‘manufacturer_id’];

$product_full_image = «http://$cfg_url/components/com_virtuemart/shop_image/product/».$row[$i][‘product_full_image’];
$tags = Array (‘{product_name}’,'{product_desc}’);
$repl = Array ($row[$i][‘product_name’],$row[$i][‘product_s_desc’]);
$product_price = substr($row[$i][‘product_price’], 0, -3);
$product_cat_id=$row[$i][‘category_id’];
echo»\n<offer id=\»».$row[$i][‘product_id’].»\» available=\»true\» bid=\»$bid\»>\n»;
echo»<url>».$url.»</url>\n»;
echo»<price>$product_price</price>\n»;
// Валюта в которой указаны Ваши цены
echo»<currencyId>RUR</currencyId>\n»;
echo»<categoryId>».$product_cat_id.»</categoryId>\n»;
echo»<picture>».$product_full_image .»</picture>\n»;
// Возможность доставки
echo»<delivery>true</delivery> \n»;
echo»<name>».strip_tags($row[$i][‘product_name’]).»\»</name>\n»;
echo»<description>».strip_tags(str_replace($tags,$repl,$description_template)).»</description>\n»;
echo»</offer>\n»;
}
}

echo»</offers>\n»;
echo»</shop>\n»;
echo»</yml_catalog>\n»;

function d2a($query){
$result = mysql_query($query) or die(«Query failed : » . mysql_error());
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {$res[] = $line;}
mysql_free_result($result);
return $res;
}

?>

Скачать готовый файл скрипта выгрузки virtuemart в яндекс маркет можно тут.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

пять × два =