Форум русской поддержки Joomla!® CMS
08.12.2016, 02:18:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

импорт товаров в YML Яндекс маркет

 (Прочитано 5741 раз)
0 Пользователей и 1 Гость смотрят эту тему.
zmeyx
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Пол: Мужской
Сообщений: 143


http://www.nt1.su


« : 18.03.2011, 01:23:31 »

Всем доброго времени суток. Сделал импорт 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&amp;flypage=flypage.tpl&amp;product_id=".$row['product_id']."&amp;option=com_virtuemart&amp;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" заменять знак амперсанда "&" на "&amp;"
А также указать валюту, для правильного отображения в яндекс-маркете.


Но после всего этого макрет при проверке выдает ошибку

Определена кодировка: windows-1251 (строка 0, столбец 0)
Дата из файла: 2011-03-16 12:04 (строка 3, столбец 127)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unterminated entity reference, 'flypage' (строка 19, столбец 63)

Подскажите, в какую сторону копать?

P.S. код дан уже не из изначального примера, а после моих исправления выявленных ошибок
Записан
zmeyx
Осваиваюсь на форуме
***

Репутация: +7/-0
Offline Offline

Пол: Мужской
Сообщений: 143


http://www.nt1.su


« Ответ #1 : 18.03.2011, 01:49:41 »

Решено! решение взято отсюда http://joomlaforum.ru/index.php/topic,59209.0.html
Записан
tanir
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 2


« Ответ #2 : 28.07.2014, 20:13:21 »

Привет. А можете импортировать товары в JoomShopping?
Записан
Berzerker
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 15



« Ответ #3 : 11.01.2016, 13:16:21 »

Привет. А можете импортировать товары в JoomShopping?
У меня есть поставщик который дает прайс в yml, закачиваю их все через Инетшоп http://inetshop.in.ua/
Записан
DimonL
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 2



« Ответ #4 : 06.07.2016, 20:00:42 »

У меня есть поставщик который дает прайс в yml, закачиваю их все через Инетшоп http://inetshop.in.ua/
А если товарные фиды оптовиков не только XML?
Записан
Berzerker
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 15



« Ответ #5 : 14.07.2016, 19:34:28 »

А если товарные фиды оптовиков не только XML?
Все товарные фиды падают в один общий контроллер и только потом идет объединение дублей с товарами каталога магазина. Источники прайсов могут быть разные, XML, csv, excel.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet