Как вывести цену товара битрикс
Перейти к содержимому

Как вывести цену товара битрикс

  • автор:

Вывести минимальную и максимальную цену в разделе каталога Битрикс.

Если нужно по вывести цены в конкретном разделе каталога (или в каждом) размещаем этот код в section.php комплексного шаблона каталога и передаем в фильтр SECTION_ID — собственно ID раздела.

Получаем первый и последний элементы массива

Дальше все просто, обычным php получаем первый и последний элементы массива $arPrices. Соответственно, в первом элементе у нас минимальная цена, в последнем максимальная

Используем встроенные в php функции array_shift — извлекает первый элемент массива и array_pop — извлекает последний элемент массива

 $minPrice = array_shift($arPrices); $maxPrice = array_pop($arPrices); 

Теперь, в переменных $minPrice и $maxPrice у нас минимальная и максимальная цена товара. Таким же образом, используя CIBlockElement::GetList можно получать и сортировать любую информацию о товарах.

Гость 09.04.2023

Михаил, выводится минимальная базовая цена товара, но если у товара скидка — она не учитывается. Можно как-то вывести минимальную цену с учётом скидок на товары?

Михаил Базаров 09.04.2023

Примерная наводка, сейчас негде проверить и дописать. Если справитесь, напишите готовый код (если нет, то смогу в сл выходные)
Нужен метод CCatalogProduct::GetDiscountGroupList (инфа о скидках по ID товара)

$resPrice = CIBlockElement::GetList( Array( "CATALOG_PRICE_2" => "ASC" ), Array( "SECTION_ID"=>$arResult['~ID'] ), false, false, Array( "ID", "CATALOG_PRICE_2" ) ); while($getPrices = $resPrice->Fetch()) < // Получение скидок ID текущего товара $discounts = CCatalogProduct::GetDiscountGroupList( $getPrices['ID'] ); // Получение информации о каждой скидке foreach ($discounts as $discount) < $discountInfo = CCatalogDiscount::GetByID( $discount['ID'] ); /* Здесь вычитаем скидку из цены товара */ >// // Если скидка есть, загоняем вычисленное значение в $arPrices[] // Иначе, просто $getPrices['CATALOG_PRICE_2'] >

На деле может оказаться много зависимостей: скидка по периоду, скидка на количество и прочие условности скидки.
Нужно на конкретном проекте адаптироваться.

Мои видео на Boosty:

Поделиться страницей:

Как вывести цену товара?

Не выводит цену, компонент каталог
f549c74504b2473590caefee31d45f8a.png
Основной компонент
c5215b23e6214fef8583b796168cd2c2.png

У всех товаров есть цена и тип цен у всех Base, у основного каталога тоже базовый

  • Вопрос задан более трёх лет назад
  • 4177 просмотров

Комментировать

Решения вопроса 1

gromdron

Работаю с Bitrix24

Например, если вывод у Вас через CIblockElement::GetList происходит, а тип базовой цены имеет идентификатор 1, то можно в select параметр добавить: CATALOG_PRICE_1 — и он достанет цену.
Вообще есть достаточно много материалов на эту тему. Если немного поискать, то сразу всплывает:
https://dev.1c-bitrix.ru/support/forum/forum6/topi.

Ответ написан более трёх лет назад

Комментировать

Нравится Комментировать

GetBasePrice

Метод возвращает базовую цену товара с кодом PRODUCT_ID. Базовая цена — это цена базового типа цен. Нестатический метод.

Параметры вызова
Параметр Описание С версии
productID Код товара или торгового предложения (ID элемента инфоблока).

Возвращаемые значения

Возвращает ассоциативный массив с ключами:

Код Описание
ID Код ценового предложения.
PRODUCT_ID Код товара или торгового предложения (ID элемента инфоблока).
EXTRA_ID Код наценки.
CATALOG_GROUP_ID Код типа цены.
PRICE Базовая цена.
CURRENCY Валюта базовой цены.
QUANTITY_FROM Количество товара, начиная с приобретения которого действует эта цена.
QUANTITY_TO Количество товара, при приобретении которого заканчивает действие эта цена.

Примеры использования

"; echo "Отформатированая базовая цена: ". CurrencyFormat($ar_res["PRICE"], $ar_res["CURRENCY"]); ?>

Новинки документации в соцсетях:

Получить и вывести все цены товара в 1С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.element), независимо от того, разрешен ли просмотр цены конкретной группе пользователей.

Получить и вывести все цены товара в 1С-Битрикс

Для получения всех цен товара в Битрикс вы можете использовать метод GetCatalogProductPriceList класса CCatalogProduct или метод GetList класса CPrice.

Использования метода GetCatalogProductPriceList

Наиболее правильным способом получения этих данных является использование файла result_modifier.php и дозаполнение массива $arResult.

$allProductPrices = \Bitrix\Catalog\PriceTable::getList([ "select" => ["*"], "filter" => [ "=PRODUCT_ID" => $arResult['ID'], ], ])->fetchAll(); foreach ($allProductPrices as $allProductPrice)

В этом примере мы передаем ID товара в метод GetCatalogProductPriceList и получаем список всех цен для этого товара. Затем мы перебираем результаты и добавляем их в массив $arResult[‘ALL_PRICES’].

Массив $arResult[‘ALL_PRICES’] будет содержать все данные о ценах, которые можно использовать в шаблоне.

Использование метода GetList класса CPrice

use Bitrix\Catalog\PriceTable; $prices = \CPrice::GetList([], [ 'PRODUCT_ID' => $arResult['ID'] ]); while ($price = $prices->Fetch())

В этом примере используется класс CPrice и метод GetList, в котором передается фильтр по PRODUCT_ID для получения цен, связанных с определенным товаром. Затем, аналогично первому примеру, мы добавляем полученные цены в массив $arResult[‘ALL_PRICES’].

Сравнение двух типов цен для иммитации системы скидок

Исходя из этих примеров, можно реализовать имитацию системы скидок, фактически не создавая скидок. Пример:

// result_modifier.php ======================= $allProductPrices = \Bitrix\Catalog\PriceTable::getList([ "select" => [ "PRICE" // Нужна только цена ], "filter" => [ "=PRODUCT_ID" => $arResult['ID'], ], "order" => [ "PRICE" => "DESC" // Сортируем по уменьшению цены ] ])->fetchAll(); foreach ($allProductPrices as $allProductPrice) < $arResult['ALL_PRICES'][] = $allProductPrice; >// template.php =============================== // Старая зачеркнутая цена echo $arResult['ALL_PRICES']['0']['PRICE']; // Цена покупки echo $arResult['ALL_PRICES']['1']['PRICE']; // Расчет процента (для вывода в лейбле, можно округлить с float) echo $arResult['ALL_PRICES']['1']['PRICE'] * 100 / $arResult['ALL_PRICES']['0']['PRICE']; 

Метод GetCatalogProductPriceList класса CCatalogProduct более оптимизирован и эффективен с точки зрения производительности, особенно при работе с большим количеством товаров. Этот метод осуществляет непосредственный запрос к базе данных, что позволяет получить список цен товара более эффективно.

В свою очередь, метод GetList класса CPrice работает с классическим API Битрикс и выполняет запросы на основе старых структур данных. В некоторых случаях, особенно при работе с большим объемом данных, это может вызывать некоторые затраты на производительность.

Михаил Базаров 27.05.2023

Таким образом, для получения всех цен товара рекомендуется использовать метод GetCatalogProductPriceList, поскольку он предлагает более эффективное решение с точки зрения производительности.

Мои видео на Boosty:

Поделиться страницей:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *