Если цена равна 0, то заменяем ее на надпись (Бесплатно) как реализовать в 1с Битрикс?

Здравствуйте!
Есть код, который выводит способы доставки в карточку товара:
<div>
<?
$db_dtype = CSaleDelivery::GetList(
    array(
            "SORT" => "ASC",
            "NAME" => "ASC"
        ),
    array(
            "LID" => SITE_ID,
            "+<=WEIGHT_FROM" => $ORDER_WEIGHT,
            "+>=WEIGHT_TO" => $ORDER_WEIGHT,
            "+<=ORDER_PRICE_FROM" => $ORDER_PRICE,
            "+>=ORDER_PRICE_TO" => $ORDER_PRICE,
            "ACTIVE" => "Y",
            "LOCATION" => $DELIVERY_LOCATION
        ),
    false,
    false,
    array()
);
if ($ar_dtype = $db_dtype->Fetch())
{
   echo '<div class="delivery_list_title">Способы доставки:</div><br>';
   do
   {
      echo $ar_dtype["NAME"]." - ".CurrencyFormat($ar_dtype["PRICE"], $ar_dtype["CURRENCY"], $ar_dtype["NAME"])."<br>";
   }
   while ($ar_dtype = $db_dtype->Fetch());
}
else
{
   echo "Доступных способов доставки не найдено<br>";
}
?>

</div>

Так вот, как сделать так, чтобы при нулевой стоимости доставки, у нас сумма и валюта заменялась на слово - Бесплатно?
Есть у меня вот такой кусочек кода:
if (....[PRICE] > 0) {echo $....[PRICE];}else{echo 'бесплатно';};

Но я к сожалению плохо знаком с языками программирования и реализовать не получается, может кто-то подскажет как правильно все это слепить?
  • Вопрос задан
  • 536 просмотров
Решения вопроса 1
@hecby_v
Если для каждого способа доставки, то это
echo $ar_dtype["NAME"]." - ".CurrencyFormat($ar_dtype["PRICE"], $ar_dtype["CURRENCY"], $ar_dtype["NAME"])."<br>";

заменить на это
$price = $ar_dtype["PRICE"];
  if($price > 0){
    $txt_price = CurrencyFormat($ar_dtype["PRICE"], $ar_dtype["CURRENCY"], $ar_dtype["NAME"]);
  }
  else{
    $txt_price = 'Бесплатно';
  }
  echo $ar_dtype["NAME"] . " - " . $txt_price . '<br>';
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
pro6ka
@pro6ka
web developer
Замените
if ($ar_dtype = $db_dtype->Fetch())
на $db_dtype->SelectedRowsCount() это позволит заменить do {} while на обычный while, а внутри него if-ом проверяйте значение цены, как показано выше
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽