Jump to content

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


Go to solution Solved by Kasha,

Recommended Posts

Нужно добавить в файл дополнительный поля товаров.

<vendor> бренд
<vendorCode> артикул.

А также если есть вариант в товаре то выводить отдельной позицией в xml файл как отдельный товар(но с темже фото и url)

 

Link to post
Share on other sites
  • Solution

Находим в файле 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>
";
Link to post
Share on other sites
  • 2 weeks later...
  • 1 month later...

подскажите пожалуйста, как можно сделать в файле yandex.php в поле цены, когда стоит "0", выводило "под заказ" или вообще не выводило данный товар с ценой "0" ?

Link to post
Share on other sites
  • 1 month later...

 

Находим в файле 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>
";

Благодарю! 

Link to post
Share on other sites

подскажите пожалуйста, как можно сделать в файле yandex.php в поле цены, когда стоит "0", выводило "под заказ"или вообще не выводило данный товар с ценой "0" ?

Link to post
Share on other sites
  • 2 months later...

Еще в файл yml было бы неплохо выводить срок гарантии. :)
И еще... если работаете с яндекс маркетом, то там все лучше выводить с пометкой под заказ, т.к. в списке магазинов отображается так-же, никто из покупателей особой разницы не заметит, а служба контроля мгазинов не сможет придраться к тому, что какой-то товар везут дольше 3х дней. 


 

Link to post
Share on other sites

 

подскажите пожалуйста, как можно сделать в файле yandex.php в поле цены, когда стоит "0", выводило "под заказ"или вообще не выводило данный товар с ценой "0" ?

Если Вы разобрались можете написать как Вы сделали :-)

Link to post
Share on other sites
  • 9 months later...

у меня почему - то маркет теперь выдает ошибку...вот она

Определена кодировка: utf-8 (строка 0, столбец 0)
Дата из файла: 2014-08-15 16:16 (строка 3, столбец 38)
Фатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Element 'name' is not valid for content model: '(url?,buyurl?,price,oldprice?,wprice?,currencyId,xCategory?,categoryId+,market_category?,picture*,store?,pickup?,delivery?,deliveryIncluded?,local_delivery_cost?,orderingTime?,((typePrefix?,vendor,vendorCode?,model,((provider,tarifplan?))?)|(author?,name,publisher?,series?,year?,ISBN?,volume?,part?,language?,binding?,page_extent?,table_of_contents?)|(author?,name,publisher?,series?,year?,ISBN?,volume?,part?,language?,table_of_contents?,performed_by?,performance_type?,storage?,format?,recording_length?)|(artist?,title,year?,media?,starring?,director?,originalName?,country?)|(worldRegion?,country?,region?,days,dataTour*,name,hotel_stars?,room?,meal?,included,transport,price_min?,price_max?,options?)|(name,place,hall?,hall_part?,date,is_premiere?,is_kids?)|(name,vendor?,vendorCode?)),aliases?,additional*,description?,sales_notes?,promo?,manufacturer_warranty?,seller_warranty?,country_of_origin?,downloadable?,adult?,age?,barcode*,cpa?,fee?,rec?,expiry?,weight?,dimensions?,param*,related_offer*)' (строка 45, столбец 9)
Link to post
Share on other sites

Вы пытаетесь сделать выгрузку по типу "vendor.model". У такого типа товаров нет варианта name, только model

спасибо конечно, как я понимаю ошибка в этом куске файла

$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 ");

еще предполагаю что в этом кусочке b.name AS brand

или прошу поправить меня....

заранее тебе спасибо

Link to post
Share on other sites

Вопрос решил.... добавив в файл следующие параметры

после 128 строчки

<description>".htmlspecialchars(strip_tags($p->annotation))."</description>

вставил

<param name='Бренд'>".htmlspecialchars(strip_tags($p->brand))."</param>
<param name='Размер'>".htmlspecialchars(strip_tags($p->variant_size))."</param>
<param name='Цвет'>".htmlspecialchars(strip_tags($p->variant_name))."</param>
 
Всем спасибо
Link to post
Share on other sites
  • 2 months later...
  • 4 months later...
  • 5 months later...
  • 4 months later...

Добрый день, в файле  дописывается после расширения изображения цифры например

 

files/products/M2hqMPaHnzA.200x200.jpg?6c00911d006e80056ecbc6e7afe74501

 

как это можно убарть? потому что фото не подтягиваются в другую кмс систему

Link to post
Share on other sites

Токены зашиты в API -  чтобы убрать,  надо там дорабатывать.

 

Либо установить разработку  http://forum.simplacms.ru/topic/8424-%D1%83%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD-%D0%B8%D0%B7-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B5%D0%BD%D0%B8%D1%8F/

Link to post
Share on other sites

Токены зашиты в API -  чтобы убрать,  надо там дорабатывать.

 

Либо установить разработку  http://forum.simplacms.ru/topic/8424-%D1%83%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC-%D1%82%D0%BE%D0%BA%D0%B5%D0%BD-%D0%B8%D0%B7-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0-%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B5%D0%BD%D0%B8%D1%8F/

спасибо получилось, а как увеличить размер фото?

Link to post
Share on other sites
  • 6 months later...

А подскажите пожалуйста, как сделать вывод не только главного изображения в файле но и доп? и в версии 1.4 тянет почему то краткое описание а не новое, как исправить? Очень надеюсь на помощь.

Link to post
Share on other sites

Фрилансеров поддерживающих первую симплу можно на пальцах посчитать.

Почему не хотите обновится до последней версии?

хочу вообще уйти с симплы, вот формирую файл  с товарами, и описание только краткое и фото не все(((

Link to post
Share on other sites

хочу вообще уйти с симплы, вот формирую файл  с товарами, и описание только краткое и фото не все(((

Даже не попробовав вторую версию симплы вы решили уйти?
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...