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


Фото
* * * * * 3 голосов

<oldprice> Вывод скидки в Яндекс.Маркет

скидка oldprice старая цена яндекс маркет

Best Answer trainracing , 28.05.2015 - 13:19

Итоговая версия с учетом всех замечаний. 

- При значении меньше 1 ед старые цены выводятся

- При отсутствии старой цены выводится только <price>

 

в файле /yandex.php после v.price, добавим:

v.compare_price, 

 

далее ищем:

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);

и ниже добавляем:

if ($p->compare_price > 0) {
$compare_price = round($simpla->money->convert($p->compare_price, $main_currency->id, false),2);
} else {
$compare_price = '';
}

Дальше ищем:

print 
"<price>".$price."</price>
 <currencyId>".$currency_code."</currencyId>
 <categoryId>".$p->category_id."</categoryId>
";

и меняем на:

print 
"<price>".$price."</price>";

if( is_float($compare_price) )
   print "<oldprice>".$compare_price."</oldprice>";

print "
<currencyId>".$currency_code."</currencyId>
<categoryId>".$p->category_id."</categoryId>
";

готово.

c5K7LV6InhI.jpgs6vKcMgkToE.jpg

Перейти к посту


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

#1 trainracing

trainracing
  • Пользователь
  • 176 сообщений
  • Дизайн, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 27.05.2015 - 11:52

Всем привет. Ни для кого не секрет что все любят скидки,

и любой покупатель если увидит значек скидки, подумает "О! скидка! надо зайти!"

 

Да вы и сами представьте, 15 обьявлений с простой ценой и из них одно со скидкой. Куда вы зайдете? вот!

Dyldhm1XCxE.jpg

 

 

Приступим:

в файле /yandex.php после v.price, добавим:

 v.compare_price,

далее ищем:

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);

и ниже добавляем:

if ($p->compare_price > 1) {
$compare_price = round($simpla->money->convert($p->compare_price, $main_currency->id, false),2);
} else {
$compare_price = '';
}

Дальше ищем:

<price>$price</price>

и ниже вставляем:

<oldprice>$compare_price</oldprice>

Примеры:

товар - http://clim-shop.ru/...ishi-ma-e83h-r1

фид -    http://clim-shop.ru/yandex.xml



#2 Kors

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

Опубликовано 27.05.2015 - 12:45

Будет выводить такое:
<oldprice></oldprice>
Надо бы предусмотреть, чтоб этого не было...

#3 trainracing

trainracing
  • Пользователь
  • 176 сообщений
  • Дизайн, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 27.05.2015 - 12:57

Будет выводить такое:
<oldprice></oldprice>
Надо бы предусмотреть, чтоб этого не было...

Будет выводить такое : <oldprice/>

 

Если есть идея - подкинь или дополни часть кода, буду признателен. Хотя ты наверно убежал делать платный вариант на основе моего дополнения)

 

Яндексу главное чтоб между <oldprice> не было значения "0"


Изменено: trainracing, 27.05.2015 - 12:58


#4 mishanya

mishanya
  • Фрилансер
  • 2 575 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 27.05.2015 - 13:23

print "<price>".$price."</price>";

if( is_float($compare_price) )
   print "<oldprice>".$compare_price."</oldprice>";

print "
<currencyId>".$currency_code."</currencyId>
<categoryId>".$p->category_id."</categoryId>
";

Изменено: mishanya, 27.05.2015 - 13:26


#5 trainracing

trainracing
  • Пользователь
  • 176 сообщений
  • Дизайн, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 27.05.2015 - 14:09

print "<price>".$price."</price>";

if( is_float($compare_price) )
   print "<oldprice>".$compare_price."</oldprice>";

print "
<currencyId>".$currency_code."</currencyId>
<categoryId>".$p->category_id."</categoryId>
";

 Ваш код неработоспособен.



#6 Kors

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

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

У меня этот код работает прекрасно...



#7 Kors

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

Опубликовано 27.05.2015 - 14:39

Есть еще недостаток в #1.

Если $p->compare_price имеет значение <1,  то старая цена не будет выводиться.

А товары стоимостью менее 1$  все же бывают...



#8 trainracing

trainracing
  • Пользователь
  • 176 сообщений
  • Дизайн, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 27.05.2015 - 15:04

Есть еще недостаток в #1.

Если $p->compare_price имеет значение <1,  то старая цена не будет выводиться.

А товары стоимостью менее 1$  все же бывают...

А у меня рубли + ввод цен в разных валютах = на выходе цены в рублях, и вряд ли у кого то будет меньше 1 рубля что то стоить, у большинства в дефолте рублевая валюта. А код не работает. мб из за модуля мультивалют, выгрузки, статуса под заказ



#9 Kors

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

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

А у меня рубли + ввод цен в разных валютах = на выходе цены в рублях, и вряд ли у кого то будет меньше 1 рубля что то стоить, у большинства в дефолте рублевая валюта.

Вот и надо писать с самого начала ТОЛКОМ: ребята, мол, хоть я и пишу в разделе ГОТОВЫЕ РЕШЕНИЯ, но решение не готовое, а просто такое, которое работает на МОЕМ сайте. А что будет на других, неизвестно. Например, если у Вас цены меньше 1 единицы основной валюты, то будет работает неверно. А исправить этот пустячок мне недосуг, сами уж постарайтесь...
 

А код не работает. мб из за модуля мультивалют, выгрузки, статуса под заказ

 
 Крутенько!  Писать готовые решения я мастер, а на своем сайте в пустяковом вопросе разобраться не могу...



#10 Noxter

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

Опубликовано 27.05.2015 - 16:59

Да не обращайте Вы внимания на корса, он у нас чуть двинутый на голову.
Решение вполне рабочее, а если кому то что то не нравится, то пусть мозгами пошевелит да сделает так как ему нужно.

#11 trainracing

trainracing
  • Пользователь
  • 176 сообщений
  • Дизайн, SEO, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 28.05.2015 - 13:19   Best Answer

Итоговая версия с учетом всех замечаний. 

- При значении меньше 1 ед старые цены выводятся

- При отсутствии старой цены выводится только <price>

 

в файле /yandex.php после v.price, добавим:

v.compare_price, 

 

далее ищем:

$price = round($simpla->money->convert($p->price, $main_currency->id, false),2);

и ниже добавляем:

if ($p->compare_price > 0) {
$compare_price = round($simpla->money->convert($p->compare_price, $main_currency->id, false),2);
} else {
$compare_price = '';
}

Дальше ищем:

print 
"<price>".$price."</price>
 <currencyId>".$currency_code."</currencyId>
 <categoryId>".$p->category_id."</categoryId>
";

и меняем на:

print 
"<price>".$price."</price>";

if( is_float($compare_price) )
   print "<oldprice>".$compare_price."</oldprice>";

print "
<currencyId>".$currency_code."</currencyId>
<categoryId>".$p->category_id."</categoryId>
";

готово.

c5K7LV6InhI.jpgs6vKcMgkToE.jpg


Изменено: trainracing, 28.05.2015 - 13:20


#12 Kors

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

Опубликовано 28.05.2015 - 15:04

Очень хорошо!



#13 Deni

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

Опубликовано 28.05.2015 - 15:19

круто спасибо 



#14 Maksclub

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

Опубликовано 20.06.2015 - 13:15

Да не обращайте Вы внимания на корса, он у нас чуть двинутый на голову.
Решение вполне рабочее, а если кому то что то не нравится, то пусть мозгами пошевелит да сделает так как ему нужно.

И тем не менее с его подачи недочет был найден.... ;) А вообще согласен — любое новое и годное решение должно попадать, ну или тогда тег писать "полуфабрикат"... чтобы люди были готовы к тому, чтобы "потанцевать" или случайно положить сайт.



#15 LUN

LUN
  • Пользователь
  • 163 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 01.07.2015 - 17:09

Народ, кому не жалко, скиньте готовый yandex.php



#16 Maksclub

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

Опубликовано 01.07.2015 - 17:35

Народ, кому не жалко, скиньте готовый yandex.php

https://yadi.sk/d/7YiRicWYhbsGU

 

Но есть нюансы! Валюту я убрал... то есть вверху где вывод валют — я в ручную рубли задал, и в <currencyId>RUR</currencyId>

вместо RUR надо из стандартного yandex.php вставить... перемнную

------------------

 

если не планируешь в др валюте — то тебе все подойдет
 

ой и 121 строка не нужна тебе ;)  с размером


 


Изменено: Maksclub, 01.07.2015 - 17:38


#17 Jabber

Jabber
  • Пользователь
  • 22 сообщений
  • Заказчик
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 10.07.2015 - 08:11

Сделал, работает. Огромное спасибо!

 

По одному из товаров Яндекс выдал ошибку - скидка не может быть менее 5% и более 95% - реально получалась 4% - в этом случае товар был опубликован по старой цене, без скидки. В общем этот момент нужно учитывать, так как в админке это делается заполнением старой цены а не назначением скидки в процентах.



#18 AMax

AMax
  • Пользователь
  • 24 сообщений
  • Откуда:Belarus

Опубликовано 11.07.2015 - 16:54

Спасибо, так же внедрил себе. Все работает отлично!



#19 Andrey Terkin

Andrey Terkin
  • Фрилансер
  • 77 сообщений
  • Программирование, Верстка

Опубликовано 22.07.2015 - 19:04

del


Изменено: Andrey Terkin, 22.07.2015 - 19:53


#20 Kors

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

Опубликовано 22.07.2015 - 19:44

Нужно исправить ошибку

Эту строку

$compare_price = round($simpla->money->convert($p->compare_price, $main_currency->id, false),2);

Написать так

$compare_price = round($main->money->convert($p->compare_price, $main_currency->id, false),2);

 

Зачем? Чтоб хорошее решение стало нерабочим?







Также с меткой «скидка, oldprice, старая цена, яндекс маркет»

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

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