Перейти к содержанию
Официальный форум поддержки Simpla

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


Перейти к решению Решено trainracing,

Рекомендуемые сообщения

Да, была опечатка с "oldprice" так тяжело было сразу написать?

 

Опечатку я не заметил. И соответственно, имел в в иду не ее, а существенно более важный и принципиальный момент.

 

У топик стартера есть лишние условия IF и ELSE, которые по сути не нужны.

 

Это какие конкретно "лишние условия"?

 

Ошибку легко найти, если протестировать предложенный алгоритм не кое-как тяп-ляп, а с разными комбинациями данных.

Она проявляется уже в случае двух товаров.

Ссылка на сообщение
Поделиться на другие сайты

 

Опечатку я не заметил. И соответственно, имел в в иду не ее, а существенно более важный и принципиальный момент.

 

 

Это какие конкретно "лишние условия"?

 

Ошибку легко найти, если протестировать предложенный алгоритм не кое-как тяп-ляп, а с разными комбинациями данных.

Она проявляется уже в случае двух товаров.

Лишние условия, конкретно:

else {
$compare_price = '';
}

Можно объявить переменную до IF

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

В моем примере нет необходимости в этой проверке.

 

И плюс мое решение более компактно = )

Каким хотите, таким и пользуйтесь. Я предложил свой вариант ничем не отличающийся от варианта топикстартера, только без лишнего кода.

Ссылка на сообщение
Поделиться на другие сайты

А вообще все это решение можно укатать в одну строчку со всему проверками, допустим:

$compare_price = ($p->compare_price > 0)?"\n<oldprice>".round($simpla->money->convert($p->compare_price, $main_currency->id, false),2)."</oldprice>":"";

Восприятие кода конечно БЯКА, но пашет быстрее (если сравнивать на уровне мс)

Ну и остается только вставить $compare_price, как я показал ранее.

Ссылка на сообщение
Поделиться на другие сайты

Теперь ошибка действительно исправлена, поздравляю!

 

Только не очень понятно, чем Ваше обновленное решение (#22, Изменено: cernos, Сегодня, 12:53) отличается от решения ТС (кроме малосущественных отличий в синтаксисе)...

 

 

Лишние условия, конкретно:

else {
$compare_price = '';
}

 

В решении  ТС это условие совсем не лишнее, а принципиально важное и нужное. Если его убрать, возникнет та же ошибка, что и в Вашей начальной версии.
Смысл, значение и важность подобных моментов обычно разбирают в учебниках и курсах для начинающих программистов.
А уж программисты-профессионалы такое распознают сразу...

Ссылка на сообщение
Поделиться на другие сайты

А еще лучше вынести

$compare_price = '';

 

в начало

 

Результат зависит от того, что имеете в виду под "в начало".  Может оказаться, что это возврат к начальной ошибке cernos-а...

Ссылка на сообщение
Поделиться на другие сайты

Что могу сказать, юзайте вариант топикстартера, он рабочий, так же как и мой = )

Изменено пользователем cernos
Ссылка на сообщение
Поделиться на другие сайты

Что могу сказать, юзайте вариант топикстартера, он рабочий, так же как и мой = )

 

Только не очень понятно, чем Ваше обновленное решение (#22, Изменено: cernos, Сегодня, 12:53) отличается от решения ТС (кроме малосущественных отличий в синтаксисе)...

Обычно, если хотят дать второй вариант решения, то хотя бы отдают себе отчет о том, чем новой вариант отличается от имеющегося, отличается ли вообще, и отличается ли в лучшую сторону. Иначе непонятно, в чем смысл...

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...