Выгрузка товаров в Яндекс.Маркет 1.0.1

Выгрузка товаров в Яндекс.Маркет
CMS: Virtuemart
Разработчик: bordyzhan@gmail.com
Проверено Aibolit'ом:
Версия расширения: 1.0.1
Дата обновления: 02.12.2019

Внимание! После обновления Joomla до 3.9.13 скрипт перестал работать. Для того, что бы исправить ошибку, необходимо исправить:

define('JPATH_BASE', dirname(__FILE__).DS.'..');

на

define('JPATH_BASE', realpath(dirname(__FILE__).DS.'..'));

Установка и настройка скрипта:

1. Перемещаем папку «market» в корневую директорию Вашего сайта.

2. Далее открываем файл vm2_market.php и производим минимальные но очень нужные настройки:

4. Теперь при добавлении Вашего магазина в Яндекс.Маркет, указываете ссылку: http://ваш_сайт/market/vm2_market.php

На этом настройка и интеграция Вашего интернет-магазина на Virtuemart с Яндекс.Маркетом закончена.

 

Вывод дополнительных параметров

Некоторое время назад, для одного из сайтов, Яндекс.Маркет потребовал указать размер в <param>. В целом задача была довольно простая, если реализация на самом сайте была несколько проще. Но, вот с чем я столкнулся:

  • Товары других размеров добавлены как дочерние через настраиваемое поле Мультивариант
  • Используется плагин customsforall

Эти обстоятельства, значительным образом усложнили задачу. Набросал решение на скорую руку (с небольшим количеством товаров работает нормально).

Где-нибудь после функции getImages() добавляем новую функцию:

function getParams($id) {
	global $db;
	$query = 'SELECT
	virtuemart_product_id
		FROM
		#__virtuemart_products
			WHERE
			product_parent_id = '.$id.' AND
			product_in_stock > 0';

	
	$db->setQuery($query);
	$child_products = $db->loadObjectList();
	
	$params = '';

	if ($child_products) {
		foreach ($child_products as $child) {
			
		
			$query = 'SELECT
	c.customsforall_value_name
		FROM
			#__virtuemart_product_customfields AS a
			CROSS JOIN
			#__virtuemart_product_custom_plg_customsforall AS b
			LEFT JOIN
			#__virtuemart_custom_plg_customsforall_values AS c
			ON 
				b.customsforall_value_id = c.customsforall_value_id
		WHERE
			a.virtuemart_product_id = '.$child->virtuemart_product_id.' AND
			a.virtuemart_custom_id = 9 AND
			b.customfield_id = a.virtuemart_customfield_id';
			$db->setQuery($query);
			$sizes = $db->loadObjectList();
			
			foreach ($sizes as $size) {
			 $params .= '<param name="Размер">'.$size->customsforall_value_name.'</param>'."\n";
			}
			
		}
	}
	
	return $params;
	
}

Замените a.virtuemart_custom_id = 9 на ID поля вашего мульварианта.

Если коротко описать, что тут происходит:

  • Получаем дочерние товары родителя при условии, что они в наличии
  • Далее получаем параметры дочерних товаров
  • Возвращаем список размеров

Далее, где-нибудь после $xml .= getImages($product_id); вставляем строку:

$xml .= getParams($product_id);

Проверяйте, должно работать!

Отправить ответ

avatar
  Подписаться  
Уведомлять

Материалов на данную тему не найдено