Перейти к содержимому


Фото
- - - - -

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


Best Answer Sheeft , 22.04.2013 - 12:29

Находим в файле 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>
";
Перейти к посту


  • Чтобы отвечать, сперва войдите на форум
35 ответов в теме

#1 Denis24

Denis24
  • Пользователь
  • 23 сообщений

Опубликовано 20.04.2013 - 12:44

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

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

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

 



#2 Sheeft

Sheeft
  • Администратор
  • 1 602 сообщений
  • Пользователь
  • Откуда:Москва

Опубликовано 22.04.2013 - 12:29   Best Answer

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


#3 Denis24

Denis24
  • Пользователь
  • 23 сообщений

Опубликовано 06.05.2013 - 17:51

спасибо!



#4 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 20.06.2013 - 15:56

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



#5 Хуан Иваныч

Хуан Иваныч
  • Пользователь
  • 4 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 28.07.2013 - 14:01

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

Благодарю! 



#6 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 28.07.2013 - 17:12

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



#7 tumanenko

tumanenko
  • Пользователь
  • 136 сообщений
  • Заказчик
  • Откуда:Харьков

Опубликовано 19.10.2013 - 01:29

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


 



#8 Jekas

Jekas
  • Пользователь
  • 122 сообщений
  • Дизайн, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Королев

Опубликовано 21.10.2013 - 17:57


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


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

#9 Aleksey.g84

Aleksey.g84
  • Пользователь
  • 141 сообщений
  • Версия CMS:2.x

Опубликовано 15.08.2014 - 15:28

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

Определена кодировка: 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)


#10 Aleksey.g84

Aleksey.g84
  • Пользователь
  • 141 сообщений
  • Версия CMS:2.x

Опубликовано 15.08.2014 - 15:50

Вы пытаетесь сделать выгрузку по типу "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

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

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



#11 Aleksey.g84

Aleksey.g84
  • Пользователь
  • 141 сообщений
  • Версия CMS:2.x

Опубликовано 17.08.2014 - 13:50

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

после 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>
 
Всем спасибо


#12 Aleksey.g84

Aleksey.g84
  • Пользователь
  • 141 сообщений
  • Версия CMS:2.x

Опубликовано 17.08.2014 - 13:52

тему прошу не закрывать т.к. буду и дальше мудрить с файлом...

уверен...кому - нибудь пригодится



#13 tsybart

tsybart
  • Пользователь
  • 221 сообщений

Опубликовано 03.04.2015 - 16:01

как добавить название категории в offer

нужно вывести в теге <name>

Изменено: tsybart, 03.04.2015 - 16:02


#14 Maksclub

Maksclub

    Помогаю с Симплой и c PHP

  • Фрилансер
  • 1 388 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 19.09.2015 - 00:39

подскажите - как вывести еще url бренда

 

(делаю это в отдельном файле для Директа, выгружаю бренды все )



#15 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 19.09.2015 - 08:29

Примерно так:
1. В запросе добавить поле b.url AS brand_url
2. При выводе использовать <url>".$simpla->config->root_url.'/brands/'.$p->brand_url."</url>";

#16 Maksclub

Maksclub

    Помогаю с Симплой и c PHP

  • Фрилансер
  • 1 388 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 19.09.2015 - 20:45

Примерно так:
1. В запросе добавить поле b.url AS brand_url
2. При выводе использовать <url>".$simpla->config->root_url.'/brands/'.$p->brand_url."</url>";

 

Спасибо! Все получилось!



#17 Bulo4ka

Bulo4ka
  • Пользователь
  • 15 сообщений

Опубликовано 15.02.2016 - 18:11

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

 

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

 

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



#18 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 15.02.2016 - 18:19

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

 

Либо установить разработку  http://forum.simplac...еса-изобраения/



#19 Bulo4ka

Bulo4ka
  • Пользователь
  • 15 сообщений

Опубликовано 15.02.2016 - 18:32

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

 

Либо установить разработку  http://forum.simplac...еса-изобраения/

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



#20 Kors

Kors
  • Фрилансер
  • 3 522 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Россия

Опубликовано 15.02.2016 - 18:59

Если вопрос про yandex.php, то можно бы и догадаться, что через постановку нужных размеров в

$simpla->design->resize_modifier($p->image, 200, 200)






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых