Всем доброго времени суток. Сделал импорт YML по следующему описанию:
Создаем файл Market_ya.php со следующим содержанием:
<?php
// We'll be outputting a xml
//header('Content-type: application/xml');
//header('Content-Disposition: attachment; filename="yandex_xml.xml"');
include_once ("../../../configuration.php");
$datas = new JConfig;
$hostname = $datas->host;
$username = $datas->user;
$password = $datas->password;
$dbName = $datas->db;
$mysite = '********.ru'; // Ваш сайт
$category = "jos_vm_category";
$category_xref = "jos_vm_category_xref";
$userstable = "jos_vm_product";
$pricetable = "jos_vm_product_price";
$product_category_xref = "jos_vm_product_category_xref";
mysql_connect($hostname,$username,$password) OR DIE("Не могу соедениться базой данных Mysql");
mysql_select_db($dbName) or die(mysql_error());
$filename = '../../../xmlrpc/yandex.xml';
$xmlfile = fopen($filename,'w+');
$xmltext = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>\n";
$xmltext .= "<!DOCTYPE yml_catalog SYSTEM \"shops.dtd\">\n";
$xmltext .= "<yml_catalog date=\"";
$xmltext .= date('Y-m-d H:i');
$xmltext .= "\">\n";
$xmltext .= "<shop>\n";
$xmltext .= "<name>Название магазина</name>\n";
$xmltext .= "<company>Название компании</company>\n";
$xmltext .= "<url>http://$mysite</url>\n";
$xmltext .= "<currencies>\n";
$xmltext .= "<currency id=\"RUR\" rate=\"1\"/>\n";
$xmltext .= "</currencies>\n";
$xmltext .= "<categories>\n";
mysql_query("SET CHARACTER SET 'cp_1251_general_ci'");
$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) {
$xmltext .= "<category id=\"".$cat_child_id."\">".$cat_name."</category>\n";
}
else {
$xmltext .= "<category id=\"".$cat_child_id."\" parentId=\"".$cat_parent_id."\">".$cat_name."</category>\n";
}
$rw++;
}
$xmltext .= "</categories>\n";
$xmltext .= "<offers>\n";
$query = "SELECT * FROM $userstable";
$res = mysql_query($query) or die(mysql_error());
$rw=1;
while ($row=mysql_fetch_array($res)) {
//$url="http://$mysite/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id']."&option=com_virtuemart&Itemid=2";
$product_full_image = "http://$mysite/components/com_virtuemart/shop_image/product/".$row['product_full_image'];
$product_name = $row['product_name'];
$product_s_desc = $row['product_s_desc'];
$query1 = "SELECT product_price FROM $pricetable WHERE product_id=".$row['product_id'];
$res1 = mysql_query($query1) or die(mysql_error());
$price=mysql_fetch_array($res1);
$product_price = substr($price['product_price'], 0, -3);
$query3 = "SELECT category_id FROM $product_category_xref WHERE product_id=".$row['product_id'];
$res3 = mysql_query($query3) or die(mysql_error());
$product_cat_id1=mysql_fetch_array($res3);
$product_cat_id=$product_cat_id1['category_id'];
$url="http://$mysite/index.php?page=shop.product_details&flypage=flypage.tpl&product_id=".$row['product_id']."&category_id=".$product_cat_id."&option=com_virtuemart&Itemid=1";
$xmltext .= "<offer id=\"".$rw."\" available=\"true\" bid=\"11\">\n";
$xmltext .= "<url>".$url."</url>\n";
$xmltext .= "<price>$product_price</price>\n";
$xmltext .= "<currencyId>RUR</currencyId>\n";
$xmltext .= "<categoryId>".$product_cat_id."</categoryId>\n";
$xmltext .= "<picture>".$product_full_image ."</picture>\n";
$xmltext .= "<name>".$product_name."</name>\n";
$xmltext .= "<description>".$product_name.".</description>\n";
$xmltext .= "</offer>";
$rw++;
}
$xmltext .= "</offers>\n";
$xmltext .= "</shop>\n";
$xmltext .= "</yml_catalog>\n";
if(fwrite($xmlfile, $xmltext)){
echo "<pre>File <a target='_blank' href='http://$mysite/xmlrpc/yandex.xml'>http://$mysite/xmlrpc/yandex.xml</a> has been saved</pre>";
}
fclose($xmlfile);
?>
В данном файле, нужно будет отредактировать следующие параметры для вашего интернет магазина:
$mysite – напишите домен вашего сайта
$filename – путь до XML файла и его имя. Также на папку, в которой будет находиться файл, нужно установить права 777
размещаем его по адресу /administrator/components/com_virtuemart/market_ya.php
А чтобы можно было легко обновлять XML яндекс-марект через адмнику VirtueMart, нужно вставить ссылку на файл в файле шаблона административной панели в меню:
administrator\components\com_virtuemart\header.php
в 60 строке, после тэга <center>, вставим:
<?php
echo "<div style='display:block; text-align:center; margin:10px 0 10px 0; font-size:16px; font-weight:bold; color:#FF5555;'><a style='color:#FF5555; text-decoration:underline;' href='".$mosConfig_live_site."/administrator/components/com_virtuemart/market_ya.php'>export yandex market</a></div>";
?>
upd.: Не забывайте при указании структуры ссылки в переменной "$url" заменять знак амперсанда "&" на "&"
А также указать валюту, для правильного отображения в яндекс-маркете.
Но после всего этого макрет при проверке выдает ошибку
Определена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2011-03-16 12:04 (строка 3, столбец 127)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unterminated entity reference, 'flypage' (строка 19, столбец 63)
Подскажите, в какую сторону копать?
P.S. код дан уже не из изначального примера, а после моих исправления выявленных ошибок