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


Фото
- - - - -

Добавление полей в файл экспорта 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 ответов в теме

#21 Bulo4ka

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

Опубликовано 14.09.2016 - 17:38

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



#22 Bulo4ka

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

Опубликовано 14.09.2016 - 18:58

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

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



#23 service79

service79
  • Пользователь
  • 61 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 11.11.2016 - 14:36

Вопрос: при формировании yml выгружается весь список категорий. При этом обратил внимание, что так же выгружаются и скрытые категории. Кто-нибудь делал проверку на видимость? Я понимаю, что конструкция должна быть примерно такого вида "{if $c->visible}", но, к сожалению, у меня нет навыков правильного создания :-)



#24 Kors

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

Опубликовано 11.11.2016 - 14:57

Пробуйте в simpla/ajax/export.php вместо

	 			if(!empty($cat))
 				{
	 				// Вычисляем составляющие категории

вставить

	 			if($cat->visible)
 				{
	 				// Вычисляем составляющие категории



#25 service79

service79
  • Пользователь
  • 61 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 11.11.2016 - 17:05

Пробуйте в simpla/ajax/export.php вместо

	 			if(!empty($cat))
 				{
	 				// Вычисляем составляющие категории

вставить

	 			if($cat->visible)
 				{
	 				// Вычисляем составляющие категории

К сожалению, не влияет.. Все так же выгружается скрытая категория... Пытаюсь взять конструкцию из sitemap - там это реализовано :)


Изменено: service79, 11.11.2016 - 17:06


#26 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 11.11.2016 - 17:25

Это совсем не тот файл, если разговор про Яндекс - то

foreach($categories as $c)
{
if($c->visible)
{
print "<category id='$c->id'";
if($c->parent_id>0)
	print " parentId='$c->parent_id'";
print ">".htmlspecialchars($c->name)."</category>
";
}
}


#27 Kors

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

Опубликовано 11.11.2016 - 18:55

Это совсем не тот файл, если разговор про Яндекс - то

foreach($categories as $c)
{
if($c->visible)
{
print "<category id='$c->id'";
if($c->parent_id>0)
	print " parentId='$c->parent_id'";
print ">".htmlspecialchars($c->name)."</category>
";
}
}

 

Этого, скорее всего, недостаточно.  Если сделать только это, то может оказаться, что в yandex.xml  будут присутствовать товары, у которых ID сатегории указано, а сама категория в списке отсутствует.  А поисковику такое вряд ли понравится.  Надо еще и основной  запрос на товары менять...



#28 service79

service79
  • Пользователь
  • 61 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 11.11.2016 - 19:28

Это совсем не тот файл, если разговор про Яндекс - то

foreach($categories as $c)
{
if($c->visible)
{
print "<category id='$c->id'";
if($c->parent_id>0)
	print " parentId='$c->parent_id'";
print ">".htmlspecialchars($c->name)."</category>
";
}
}

Спасибо!!!! Да - это оно... И по идее это решение нужно всем у кого есть в каталоге скрытые категории.



#29 service79

service79
  • Пользователь
  • 61 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 12.11.2016 - 10:09

Этого, скорее всего, недостаточно.  Если сделать только это, то может оказаться, что в yandex.xml  будут присутствовать товары, у которых ID сатегории указано, а сама категория в списке отсутствует.  А поисковику такое вряд ли понравится.  Надо еще и основной  запрос на товары менять...

В том и дело, что речь идет о выборочной выгрузке товаров, так что вряд ли



#30 Kors

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

Опубликовано 12.11.2016 - 10:35

В том и дело, что речь идет о выборочной выгрузке товаров, так что вряд ли

 

Это никак не зависит от того, выборочная выгрузка или нет. А зависит от конкретных данных. Если у Вас все работает, Вам повезло и Вас можно поздравить. Но имейте в виду, в любой момент после изменений, связанных, например, с изменением активности категорий, может сработать неверно...



#31 Sheeft

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

Опубликовано 15.11.2016 - 00:02

добавить в блок where строчку pc.visible = 1;))


Изменено: Sheeft, 15.11.2016 - 15:49


#32 Kors

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

Опубликовано 15.11.2016 - 10:18

добавить в блок where строчку pc.visible = 1;))

 

 

Сильный совет. А Вы сами такое пробовали?

Не смущает то, что таблица __products_categories pc не имеет такого поля?



#33 Sheeft

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

Опубликовано 15.11.2016 - 15:49

а, тьфу. спать надо ночами ))

Один JOIN и одно условие в WHERE... Для линейного решения (не рекурсивного по категориям)...



#34 Skynet

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

Опубликовано 09.12.2016 - 12:14

так как же скрыть товары скрытых категорий?



#35 Nikolas

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

Опубликовано 19.03.2018 - 12:36

Подскажите, как вывести свойства товара
 

<param name='Размер'>".htmlspecialchars(strip_tags($p->variant_size))."</param>
<param name='Цвет'>".htmlspecialchars(strip_tags($p->variant_name))."</param> 

Это для конкретных свойств, а как перебрать все, что указаны у товара? По разным категориям они разные..



#36 Tarasbulba

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

Опубликовано 13.09.2018 - 18:10

как добавить размеры детской одежды?

 

<param name="Размер" unit="Months">12-18</param>
<param name="Размер" unit="Height">104</param>






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

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