Как известно, цена в товарах битрикса хранится не в свойствах, а в полях каталога. Цену необходимо выводить динамически, т.к. могут появиться скидки.
Вывести цену со скидкой и старую цену в Битриксе
Для начала посмотрим на такой код:
<? global $USER; $productID = 7813; $quantity = 1; $renewal = 'N'; $arPrice = CCatalogProduct::GetOptimalPrice( $productID, $quantity, $USER->GetUserGroupArray(), $renewal ); if (!$arPrice || count($arPrice) <= 0) { if ($nearestQuantity = CCatalogProduct::GetNearestQuantityPrice($productID, $quantity, $USER->GetUserGroupArray())) { $quantity = $nearestQuantity; $arPrice = CCatalogProduct::GetOptimalPrice($productID, $quantity, $USER->GetUserGroupArray(), $renewal); } } //print_r($arPrice);
Получаем массив со следующими ключами:
array( "PRICE" => массив параметров цены, из которой была получена минимальная. Устарел, не используется с версии 15.0.2 (необходимо использовать ключ RESULT_PRICE). Содержит ключи "ID" - ID ценового предложения, "CATALOG_GROUP_ID" - ID типа цены, "PRICE" - величина исходной цены, "CURRENCY" - валюта исходной цены, "ELEMENT_IBLOCK_ID" - ID инфоблока товара, которому принадлежит ценовое предложение, "VAT_INCLUDED" - включен ли НДС в цену (Y/N), "VAT_RATE" - величина ставки НДС в процентах, "DISCOUNT_PRICE" => минимальная цена в базовой_валюте, "DISCOUNT" => самая первая скидка из DISCOUNT_LIST. Устарел, не используется с версии 12.5.0, "DISCOUNT_LIST" => список скидок, примененных к товару. Инкрементный массив, скидки идут в порядке применения. Каждая запись описывает скидку, >array( "ID" => ID скидки "TYPE" => тип (накопительная или нет), "SITE_ID" => сайт, "ACTIVE" => активность, "ACTIVE_FROM", "ACTIVE_TO" => даты активности скидки, "RENEWAL" => применяется к товару или к продлению подписки, "NAME" =>название, "SORT" => сортировка, "MAX_DISCOUNT" => максимальная величина скидки в валюте, "VALUE_TYPE" => процентная, абсолютная скидка либо фиксированная цена, "VALUE" => величина скидки, "CURRENCY" => валюта скидки, "PRIORITY" => приоритет, "LAST_DISCOUNT" => прекратить или нет применения скидок, "COUPON" => купон (если есть), "COUPON_ONE_TIME" => тип купона, "COUPON_ACTIVE" => активность купона, "MODULE_ID" => модуль, к которому относится скидка "HANDLERS" => массив модулей, требуемых для условий скидки ) "PRODUCT_ID" => ID товара, "RESULT_PRICE" => array( "PRICE_TYPE_ID" => ID типа цены "BASE_PRICE" => исходная цена "DISCOUNT_PRICE" => цена со скидкой "CURRENCY" => валюта результата "DISCOUNT" => величина скидки "PERCENT" => процент скидки "VAT_RATE" => величина ставки НДС в процентах "VAT_INCLUDED" => включен ли НДС в цену (Y/N) (в магазин всегда отдаются цены с включенным НДС) ) )
“DISCOUNT_PRICE” – содержит минимальную цену, именно это нам и нужно. Остальные параметры вы можете использовать для своих условий.
$productID – id товара
$quantity – количество
$renewal – пропускаем этот параметр
Таким образом, передав правильные параметры по API битрикса, можно узнать всю необходимую информацию по ценам и по скидкам. Конечно, при условии, что элемент инфоблока является товаров.