avatar

Добавление поле бренд и артикул в файл экспорта yandex.xml

Опубликовал в блог Дополнения и модули для Simpla CMS
0


Данный вид выгрузки позволяет лучше ассоциировать карточки товаров в Яндекс.Маркете.

Находим в файле yandex.php строки
$simpla->db->query("SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image
                    FROM __variants v LEFT JOIN __products p ON v.product_id=p.id
                    
                    LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1)    
                    LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)    
                    WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");

меняем на
$simpla->db->query("SELECT v.price, v.id AS variant_id, p.name AS product_name, v.name AS variant_name, v.position AS variant_position, v.sku AS variant_sku, p.id AS product_id, p.url, p.annotation, pc.category_id, i.filename AS image, b.name AS brand
		    FROM __variants v LEFT JOIN __products p ON v.product_id=p.id
		    LEFT JOIN s_brands b ON b.id = p.brand_id
		    LEFT JOIN __products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM __products_categories WHERE product_id=p.id LIMIT 1)	
		    LEFT JOIN __images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM __images WHERE product_id=p.id LIMIT 1)	
					WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position ");

далее ищем
if($p->image)
print "<picture>".$simpla->design->resize_modifier($p->image, 200, 200)."</picture>
";

print "<name>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</name>
<description>".htmlspecialchars(strip_tags($p->annotation))."</description>
</offer>
";

меняем на
if($p->image)
print "<picture>".$simpla->design->resize_modifier($p->image, 200, 200)."</picture>
";

if($p->brand)
print "<vendor>".$p->brand."</vendor>
";

if($p->variant_sku)
print "<vendorCode>".$p->variant_sku."</vendorCode>
";

print "<name>".htmlspecialchars($p->product_name).($p->variant_name?' '.htmlspecialchars($p->variant_name):'')."</name>
<description>".htmlspecialchars(strip_tags($p->annotation))."</description>
</offer>
";

Если необходимо вывести только бренд, удалите эти строки
if($p->variant_sku)
print "<vendorCode>".$p->variant_sku."</vendorCode>
";


ДЕМО

Поле vendor и vendorcode
5 комментариев RSS
avatar
Просто огромное, человеческое спасибо.
avatar
Дмитрий не подскажите в чем может быть проблема? Сам файл выгрузки вроде как выглядит нормально, но Яндекс ругается :(
Дата из файла: 2016-01-15 01:27 (строка 3, столбец 37)
scheme: local_delivery_cost (строка 180, столбец 8)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Unknown tag: XML tag «vendorcode» (строка 189, столбец 12)
комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.