Киби.ru

Живой сайт об актуальных проектах

User Tools

Site Tools


joomla:virtuemart4

Экспорт в формат Yandex Market из VirtueMart 1.1.5

Задача

Настроить выгрузку данных (шлюз) из Virtuemart 1.1.5 (Joomla 1.5.21) в Yandeх Market. Для этого надо выгрузить информацию о продукции в формат YML.

Решение

Для этого делаем скрипт, который при вызове обращается к таблицам VirtueMart, хранящимся в Б/Д джумлы и выводит инфу в формате YML. К сожалению, формат YML не совсем соответствует спецификации XML, так что приходится создавать его “ручками” без использования XML библиотек. Итак:

Скрипт market.yml

Создаём в корневой папке джумлы файл market.yml следующего содержания (сохраняем файл в кодировке utf-8):

<?php
//***********************************************************
//
// Версия коннектора к Yandex.Market от 18.04.2009
// автор доработок Саид Дашук (dashuk@ngs.ru)
//
// Доработки:
// 1. Подключение к настройкам Joomla (теперь не надо прописывать реквизиты доступа к БД,
//         а достаточно указать конфигурационный файл 'configuration.php')
// 2. Добавлены комментарии для новичков
// 3. ВЫБОРКА ВСЕХ ТОВАРОВ ПРОИСХОДИТ ОДНИМ ЗАПРОСОМ!
// 4. Добавлен шаблон для описания товара (тег <description>)
// 5. Курсы валют, приравнены к курсу ЦБРФ
// 6. Добавлены теги "доставка" и "производитель" (просто мне они нужны, а Вы решайте сами)
// а также: форматирование для удобства кода и вывода и еще что то по мелочам.
//
// Проверялось на Joomla! 1.5.9 Production/Stable / VirtueMart 1.1.2 stable
//
//***********************************************************
 
 
// Пропишите относительный путь к 'configuration.php' (он находится в корне Joomla)
// Например: include '../configuration.php';
include 'configuration.php';
$cfg = new JConfig();
 
//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.
//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к
//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,
//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении
//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.
$cfg_name = $cfg->fromname;
 
//Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.
$cfg_company = $cfg->sitename;
 
//URL-адрес главной страницы магазина без http://
$cfg_url = 'test.ru';
 
// Шаблон для описания товара
// Вместо {product_name} - будет вставлено наименование товара
// Вместо {product_desc} - будет вставлено краткое описание
// ПРИМЕР:
// $description_template = '{product_name} от производителя';
$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());
 
// Исправьте, если у вас другая кодировка в БД
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;
}
 
?>

Правка .htaccess

Добавляем в .htaccess директиву обрабатывать PHP в YML файлах:

# Чтобы в файлах .html и .htm работали включения PHP вида <?php:?>
RemoveHandler .html .htm
AddType application/x-httpd-php .php .html .phtml .htm .yml

Проверка работы

  • Проверяем работу скрипта: открываем страницу http://test.ru/market.yml в браузере и смотрим исходный код страницы. Убеждаемся, что идёт выгрузка.
  • Проверяем работу скрипта через интерфейс Яндекс-Маркета или Яндекс-Вебмастера (там тоже есть возможность подключить YML файл).

Discussion

Марат, 2016/03/13 20:53

Большое спасибо! Столько раз пробовал его настроить и все никак, но с Вашей помощью все получилось. Все работает. Благодарю за работу!

Chainikus, 2015/08/21 12:46

Дописал код, теперь стоимость идет сос кидкой. (и с абсолютной и с относительной).

в строке 59 (около) объявляем новую переменную: $disciunttable = $cfg→dbprefix.«vm_product_discount»; Добавляем ссылку на таблицу со скидками в строке 133 добавляем еще одно поле, которое берет из базы «есть ли скидка». В примере ставлю между ближайших строк: $tb_product.product_s_desc, $tb_product.product_discount_id, $tb_product.product_weight И, наконец, со 150 строки исправленный код: $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'];
	$product_discount=$row[$i]['product_discount_id'];			//ID скидки
	echo"\n<offer id=\"".$row[$i]['product_id']."\" available=\"true\" bid=\"$bid\">\n";
	echo"<url>".$url."</url>\n";
	if ($product_discount == 0)                  				//Если скидки нет
		echo"<price>$product_price</price>\n";
	else 														//Если же скидка есть
	{													
		echo"<oldprice>$product_price</oldprice>\n";			//Выводим цену без скидки (старая цена)
		$query_discount = "SELECT amount, is_percent FROM $disciunttable WHERE discount_id = $product_discount";
		$row_discount = d2a($query_discount);					//Считываем из базы какая скидку
		$discount = $row_discount[0]['amount'];
		if ($row_discount[0]['is_percent'] == 0)				//Если скидка не в процентах
			$product_price = $discount;							// то тупо приравниваем её значению
		else													//Если скидка в процентах, то 			
			$product_price = $product_price*(100-$discount)/100;				//Умножаем на скидку
		echo"<price>$product_price</price>\n";						//Выводим цену сос кидкой
	}
	// Валюта в которой указаны Ваши цены
Михаил, 2015/04/25 10:16

Спасибо ГРОМАДНОЕ!!! Все сразу заработало как надо, яндекс скушал, автору респект! На фрилансе попросили с меня 3000 рублей за этот скрипт! Повезло что на Вас наткнулся на просторах инета!

Станислав, 2013/11/09 13:38

VM 1.1.4 Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Expected entity name for reference (строка 131, столбец 34)

в строке 131 запись <offer id=«4237» available=«true» bid=«11»>

URL товара формируется правильно.

как исправить ошибку?

fob, 2012/12/03 18:48

В версии от 3.12.12 исправлено: пробелы в названии картинки товаров теперь правильно отображаются http://fobfreeman.pp.ua/123/virtuemart-yml-export-script Ссылка на файл http://fobfreeman.pp.ua/123/virtuemart-yml-export-script?aid=256&sa=0

fob freeman, 2012/10/02 23:44

http://fobfreeman.pp.ua/123/virtuemart-yml-export-script Версия коннектора от 16.07.2012 7. Правильный вывод цен для товаров со скидками

8. Вывод названия товаров без заглавных букв, html тегов и спецсимволов, а также

перечисления и различные варианты написания товарного

предложения, а также слова: скидка, распродажа, дешевый,

подарок, бесплатно, акция, специальная цена, новинка, new,

аналог, заказ, приз.

9. Вывод только опубликованных товаров с ценой больше 0.01

10. Вывод доступности товаров, остальные товары показываются как товары под заказ

asada, 2012/09/16 17:40

Подскажите у меня выдает ошибку mysql_query('set names windows1251'); echo»\n»; ставил и mysql_query('set names utf8');

echo»\n» не помогает .Есть какие то идей .

Александр Сити, 2012/09/16 11:48

у меня ошибка

Не найдено описание для элемента «yml_catalog». Возможно неверно указан корневой элемент.

Строка: 3 Позиция: 38

Подробнее

cvc-elt.1.a: Cannot find the declaration of element 'yml_catalog'. Что это может быть?

Вот файл http://zapravkacity.ru/market.yml

Амид, 2012/07/06 13:33

Всем привет! как прописать чтобы выгружать не все, что на сайте, а определенные группы товаров.

Никита, 2012/06/17 08:32

Спасибо огромное! На VM 1.1.9 - прекрасно работает.

Иван, 2012/05/18 15:20

Яндекс пишет: Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unterminated entity reference, 'Cantry' (строка 5716, столбец 71)

Подскажите пожалуйста в чём ошибка, как её можно исправить?

Роман, 2012/04/30 00:57

Доброго время суток!

Поправочка:

Что надо дописать в скрипте, чтобы сохранялся файл, типа http://www.сайт.ru/export/fajl.yml или http://www.сайт.ru/export/fajl.xml?

Мария, 2012/04/27 08:31

Здравствуйте! Подскажите, чем открыть файл yml?? У меня просто скачивается документ market.yml, а посмотреть его нечем… И самое главное, Яндекс пишет - Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Invalid document structure (строка 67, столбец 48), а я их даже посмотреть не могу…

ПОМОГИТЕ ПОЖАЛУЙСТА!

Roman, 2012/04/26 22:33

А как сделать, чтобы создавался файл xml с теми же данными?

Сергей, 2012/04/21 22:18

Добрый день. Спасибо Вам за то что вы выкладываете свои работы на всеобщее обозрение. Я всё сделал как вы написали, зашёл на тестовую страницу там получилось вот это - http://floomby.ru/content/HjT8UeuvNk Просмотр кода страницы выдал - http://floomby.ru/content/NrzbhV0Gc1

Хотел спросить - это всё правильно? И второй вопрос: а как мне проставить цены только в долларах США? Если я правильно понял, то просто вот здесь банально удалить евро и рубли? курсы валют, приравнены к курсу ЦБРФ 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»; удалить евро и рубли?

Виршич, 2012/04/21 22:31, 2012/04/21 23:02

Я теперь зарегистрированный пользователь, так что можете мне и здесь отвечать, если это возможно.:-D

Kate, 2012/04/20 00:54

Здравствуйте. А может подскажите как выгрузить в xml?

Михаил, 2012/04/04 23:26

Joomla 2.5.3 Virtuemart 2.0.2

не работает

другие имена таблиц, вроде поправил, теперь ошибка «You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1»

файл market.yml переименовал в .PHP - но не должно из-за этого глючить

ANDRUHA, 2012/03/23 10:56

Автор скрипта. Если есть такая возможность свяжитесь со мной при загрузке в яндекс он выдает: Определена кодировка: utf-8 (строка 0, столбец 0) Дата из файла: 2012-03-16 12:54 (строка 3, столбец 38) Ошибка: Не указано название магазина (строка 100, столбец 9) Фатальная ошибка: Фид отклонен Гдето я не догнал чтото. За вознаграждение может поправите?

Сергей, 2012/03/20 17:01

Добрый день! Огромное спасибо автору Вопрос:для virtuemart 2 скрипт уже есть?

Наталья, 2012/03/01 19:00, 2012/03/02 15:35

Спасибо, конечно, что помогли )))

Разобралась сама, в коде нужно удалить строки:

//NAME - Короткое название магазина (название, которое выводится в списке найденных на Яндекс.Маркете товаров.
//Не должно содержать более 20 символов). Нельзя использовать слова, не имеющие отношения к
//наименованию магазина ("лучший", "дешевый"), указывать номер телефона и т.п. Название магазина,
//должно совпадать с фактическим названием магазина, которое публикуется на сайте. При несоблюдении
//данного требования наименование может быть изменено Яндексом самостоятельно без уведомления Клиента.
$cfg_name = $cfg->fromname;  - __удалить строку__
 
//Полное наименование компании, владеющей магазином. Не публикуется, используется для внутренней идентификации.
$cfg_company = $cfg->sitename;  - __удалить строку__

Затем в этих строках:

echo"<name>$cfg_name</name>\n";
echo"<company>$cfg_company</company>\n";

Заменить на:

echo"<name>Название домена</name>\n";
echo"<company>Магазин Такой-то</company>\n";  - __не более 20 символов__

Спасибо за публикацию вашего решения проблемы!

Наталья, 2012/02/29 15:37

Здравствуйте! Подскажите, при проверке скрипта выдает ошибку:

Notice: Undefined property: JConfig::$(кириллицу не воспринимает, в латинице пишу в транслите) in /home/идентификатор хостинга/xn–80adngcmr4b.xn–p1ai/docs/market.yml on line 32

Notice: Undefined property: JConfig::$vintaik in /home/идентификатор хостинга/xn–80adngcmr4b.xn–p1ai/docs/market.yml on line 35

может скрипт конфликтовать с кириллическим доменом? в чем может быть дело? причем товар выгружает, но перед этим пишет эти ошибки

Виталий, 2012/02/15 15:26

:-P Просто громадное спасибо! все работает! :-P

Есть вопросик: можно ли сделать следующее: В таблицах virtuemart есть вес товара в свойствах, допустим это некое «N», необходимо чтобы этот показатель в файле YML был представлен как стоимость доставки для yandex.market по формуле :

(стоимость доставки для yandex.market)=N*10 [так как в самом магазине будем использовать стандартный модуль доставки и доставка будет считаться через виртуальный вес товара(который был придуман для каждой категории отдельно) но чтобы не пугать покупателей 3-значными числами в значении вес было принято решение добавить соимость доставки через вес по формуле: вес=стоимость доставки/10]

Если вкратце =) то так : нужно значение «ВЕС» в virtuamarte перенести в значение «СТОИМОСТЬ ДОСТАВКИ» для yandex.marketa но умноженное на 10 Пожалуйста помогите m( очень нуна =) сам как свинья в помидорах =)

Михаил, 2012/01/15 19:36

Здравствуйте, у меня возникла проблема: При экспорте в маркет, не отображается артикул товара используется joomla 1.5.23Stable virtuemart 1.1.9Stable YML Exporter Адрес сайта watches-the-best.ru

URL для экспорта в Яндекс.Маркет: http://watches-the-best.ru/index.php?option=com_vmymlexport&view=yml&no_html=1 для предварительного просмотра http://watches-the-best.ru/index.php?option=com_vmymlexport&view=yml

Подскажите как решить данною проблему?

Заранее спасибо.

fob, 2011/12/27 15:13

чтобы добавить производителя нужно после $product_cat_id=$row[$i]['category_id']; добавить $manufacturer=$row[$i]['mf_name']; и после echo»<categoryId>».$product_cat_id.»</categoryId>\n»; добавить echo»<vendor>».$manufacturer.»</vendor>\n»;

fob, 2011/12/27 15:11

Вот код для функции которая учитывала бы скидку, если кто нибудь переделает его и добавит - это будет очень хорошо.

    ''   if ($product_discount_id == "0")
         {
           $text .= "<price>".$product_price."</price>";
         }
       else
        {
          $mysql_product_discount = mysql_query ("SELECT amount FROM jos_vm_product_discount 
          WHERE discount_id='$product_discount_id' ");
          while ($array_product_discount = mysql_fetch_array($mysql_product_discount) )
           {
             $product_price = $product_price - $array_product_discount['amount'];
             $text .= "<price>".$product_price."</price>";
           }
        }''
Роман, 2012/04/30 00:53

Доброго время суток!

Что надо дописать в скрипте, чтобы сохранялся файл, типа http://www/сайт.ru/eport/fajl.yml или http://www/сайт.ru/eport/fajl.yml?

biliya182, 2011/12/23 17:43

http://podushechka.net/market.yml белый экран… база данных сама подключается в случаи если я правильно указал путь к configuration.php /domains/podushechka.net/public_html/configuration.php или http://podushechka.net/configuration.php я имею в виду пароль и логин в базу данных нужно вводить в скрипте или это автоматически? подскажите пожалуйста!! :) спасибо!

Михаил, 2011/12/20 01:43

Моя база, в маркете мне сказали, что проблема с пробелами, я в этом не разбираюсь, помогите пожалуйста.

Николай, 2011/12/16 22:57

Удалил и заново создал товары на которые жаловался yandex и все заработало. Спасибо автору огромное!!!

Николай,, 2011/12/16 22:50

Удалил данные товары яндекс принял, интересно в чем была проблема

Николай, 2011/12/16 22:47

Не получается загрузить файл на yandex пишет Определена кодировка: utf-8 (строка 0, столбец 0) Дата из файла: 2011-12-16 21:41 (строка 3, столбец 38) Ошибка: Для предложения указана неизвестная категория: 0 (строка 3337, столбец 9) Ошибка: Предложение отклонено: http://test.ru/index.php?page=shop.product_details&flypage=shop.flypage&option=com_virtuemart&product_id=323 (строка 3337, столбец 9) Ошибка: Для предложения указана неизвестная категория: 0 (строка 3370, столбец 9) Ошибка: Предложение отклонено: http://test.ru/index.php?page=shop.product_details&flypage=shop.flypage&option=com_virtuemart&product_id=325 (строка 3370, столбец 9) Успешно обработано 334 предложений из 336

Сергей, 2011/12/06 15:34

Скажите, пожалуйста, как сделать, чтоб выгружались не все товары и категории, а только выбранные или же, чтоб выбранные категории и товары в них не выгружались.. Спасибо.

Евгений, 2011/11/16 13:15

Подскажите как сделать чтобы в YML указывалась цена со скидкой?

Diplomat, 2011/11/07 20:26

Все работает, но ссылки почему-то обычного вида без SEF. Как можно исправить?

Артем, 2011/10/19 08:09

Подскажите пожалeйста что означает такая строчка при запуске market.yml

Parse error: syntax error, unexpected T_STRING in Z:\home\magazin\www\market.yml on line 35

Запускал через локальный сайт (denwer)

Антон, 2011/10/17 21:45

А на втором магазине beauty-health.com.ua другая ошибка: Определена кодировка: utf-8 (строка 0, столбец 0) Дата из файла: 2011-10-17 20:42 (строка 3, столбец 38) Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unterminated entity reference, 'Health' (строка 5, столбец 56)

Антон, 2011/10/17 21:38

Доброго времени суток, обращаюсь к файлу через брайзер - все выдает, товары ссылки, гружу в яндекс маркет, выдает ошибку: Определена кодировка: utf-8 (строка 0, столбец 0) Дата из файла: 2011-10-17 20:35 (строка 3, столбец 38) Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Expected entity name for reference (строка 139, столбец 29)

Насколько я понял это из-за символов & и » в названии товаров, где мне это менять, сайт - littlestar.com.ua Надеюсь на помощь.

Sergey, 2011/09/21 09:41, 2011/09/21 15:32

обращаюсь через браузер к файлу мне открывается как еткстовый с полным кодом. Яндекс маркет говорит ошибку:Ошибка: Ошибка распаковки архива: unsupported mime type «text/x-php» Фатальная ошибка: Внутренняя ошибка во время патчинга файла: 1 в haccess Добавил код выглядит так:

########## Begin - Joomla! core SEF Section
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
RemoveHandler .html .htm
AddType application/x-httpd-php .php .html .phtml .htm .yml
#
########## End - Joomla! core SEF Section

В чем дело?

Видимо не отработала директива в .htaccess обрабатывать PHP в YML файлах. Обратитесь с просьбой к хостеру - может у него не включена обработка пользовательских .htaccess файлов и эту настройку надо прописывать куда-то еще.

Либо можно попробовать изменить расширение файла скрипта на *.php.

Алекс, 2011/08/16 08:36

попробуй на ftp посмотреть или браузером другим :-D

Дмитрий, 2011/08/11 12:13

Подскажите. Обращаюсь к market.yml, а он просто скачивается. Как его проверить?

Дмитрий, 2011/08/05 11:52

Мужики, а как быть с ЧПУ? На сайте установлены ЧПУ с router.php а в файл выгружаются обычные урлы. :(

AlexD, 2012/06/17 22:26

Смотря какой роутер стоит. Под каждый отдельный роутер надо править.

Вячеслав, 2011/08/01 16:08

Я уже разобрался, это Яндекс не допускает некоторых вещей в названиях товара, у меня выгрузка идет из 1С, там впереди в некоторых товарах было слово АКЦИЯ видимо там хорошо настроенные фильтры, это слово и есть ошибка а строка это первого слова, прикол то что если подчистить первое нозвание по строке но оставить подобное снизу, то потом второй раз выдаст ошибку с шагом ниже по ст роке до этого слова, я подчистил все названия и проблема пропала) С кодировкой все нормально БД у меня UTF8

Вячеслав, 2011/07/31 12:57

При проверке в браузере все работает нормально, при проверке в сервисе Яндекс маркет выдает ошибку: Определена кодировка: utf-8 (строка 0, столбец 0) Дата из файла: 2011-07-31 14:54 (строка 3, столбец 38) Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Expected entity name for reference (строка 326, столбец 25)

Подскажите как ее исправить

А у вас база данных в какой кодировке? Если не в UTF-8, то надо исправить соответствующую строку в скрипте.

Apsveic Draugu, 2011/07/05 18:32

А как зделать, что бы цены с налогом указывались?

Никита, 2011/06/29 11:51

Спасибо! Однако, есть недоработка. Если для товаров применяется скидка, то цена в YML указывается все равно без скидки. ПС Что бы не долбаться с типами MIME можно поставить расширение PHP и все. Яндекс кушает на отлично. Пользователи IIS оценят ) ППС Если поправите недаработочку сообщите мне плиз на мыло.

Дмитрий, 2011/06/26 13:26

Работает! Ещё раз спасибо! :)

Дмитрий, 2011/06/26 13:18

Спасибо, добрый человек!!! Сейчас протестируем на 1.1.9

Leon205, 2011/06/21 13:35

Отличный скрипт, Парень ты молодец!!! работает даже на VM 1.1.8

Денис, 2011/06/14 19:21

«Добрый день, а чем может быть вызван белый экран? Просто ничего нет?» - аналогично VM 1.1.6

Максим, 2011/06/03 14:54

Спасибо друг, очень полезный скрипт, не пришлось самому писать!

Станислав, 2011/04/12 16:39

Добрый день, а чем может быть вызван белый экран? Просто ничего нет?

VM 1.1.4

Спасибо.

You could leave a comment if you were logged in.
joomla/virtuemart4.txt · Last modified: 2010/12/11 14:10 by kibi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki