Доброго времени суток. Помогите, пожалуйста, не работает выгрузка !
Joomla 1.5.14
VM 1.1.4
Я.маркет при загрузке выдает ошибку:
Определена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2010-10-17 03:02 (строка 3, столбец 113)
[2010-10-17 04:02:51] (Fatal) [72:9] (Fatal) 521 Error parsing XML feed: Element 'name' is not valid for content model: '(url,buyurl?,price,wprice?,currencyId,xCategory?,categoryId+,picture?,delivery?,deliveryIncluded?,local_delivery_cost?,orderingTime?,((typePrefix?,vendor,vendorCode?,model,((provider,tarifplan?))?)|(author?,name,publisher?,series?,year?,ISBN?,volume?,part?,language?,binding?,page_extent?,table_of_contents?)|(author?,name,publisher?,series?,year?,ISBN?,volume?,part?,language?,table_of_contents?,performed_by?,performance_type?,storage?,format?,recording_length?)|(artist?,title,year?,media?,starring?,director?,originalName?,country?)|(worldRegion?,country?,region?,days,dataTour*,name,hotel_stars?,room?,meal?,included,transport,price_min?,price_max?,options?)|(name,place,hall?,hall_part?,date,is_premiere?,is_kids?)|(name,vendor?,vendorCode?)),aliases?,additional*,description?,sales_notes?,promo?,manufacturer_warranty?,country_of_origin?,downloadable?,adult?,barcode*,param*)'
Мой код выгрузки:
<?php
include '../configuration.php';
$cfg = new JConfig();
$cfg_name = 'название';
$cfg_company = 'организация';
$cfg_url = 'МОЙ САЙТ';
$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";
$product_discount = $cfg->dbprefix."vm_product_discount";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbName) or die(mysql_error());
mysql_query('set names cp1251');
echo"<?xml version=\"1.0\" encoding=\"windows-1251\"?>\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_discount_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_price.product_currency,
$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'];
//ссылка для sh404SEF
$url="http://$cfg_url/index.php?option=com_virtuemart&Itemid=71&category_id=".$row[$i]['category_id']."&flypage=flypage.tpl&lang=ru&page=shop.product_details&product_id=".$row[$i]['product_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_discount_id = $row[$i]['product_discount_id'];
$product_currency = $row[$i]['product_currency'];
$vendor = $row[$i]['mf_name'];
$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";
$mysql_product_discount = mysql_query("SELECT amount FROM $product_discount WHERE discount_id='$product_discount_id'");
while ($array_product_discount = mysql_fetch_array($mysql_product_discount) )
$product_price = $product_price - $product_price * $array_product_discount['amount'] / 100;
echo"<price>$product_price</price>\n";
if ($product_currency == "RUB"){
echo"<currencyId>RUR</currencyId>\n";
} else {
echo"<currencyId>$product_currency</currencyId>\n";
}
echo"<categoryId>".$product_cat_id."</categoryId>\n";
if ($row[$i]['product_full_image']){
echo"<picture>".$product_full_image ."</picture>\n";
} else {
}
echo"<delivery>true</delivery> \n";
echo"<vendor>".HtmlSpecialChars($vendor)."</vendor>\n";
echo"<name>".HtmlSpecialChars(strip_tags($row[$i]['product_name']))."</name>\n";
echo"<description>".HtmlSpecialChars(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;
}
?>