bitrix:catalog.element

в шаблоне компонента детальной страницы находим файл result_modifier.php и в самый конец файла (до закрывающего тега ?> ) добавляем:

if (CModule::IncludeModule('yenisite.market')) {
	$prices = CMarketPrice::GetItemPriceValues($arResult["ID"], $arResult['PRICES']);
	if(count($prices)>0)
		unset ($arResult["PRICES"]);
	$minPrice = false;
	foreach ($prices as $k => $pr) {
		$pr = floatval($pr);
		$arResult["PRICES"][$k]["VALUE"] = $pr;
		$arResult["PRICES"][$k]["PRINT_VALUE"] = $pr;
		if ((empty($minPrice) || $minPrice > $pr) && $pr > 0) {
			$minPrice = $pr;
			$minPriceId = $k;
		}
	}
	if ($minPrice !== false) {
		$arResult['MIN_PRICE']['PRICE_ID'] = $minPriceId;
		$arResult['MIN_PRICE']['VALUE'] = $minPrice;
		$arResult['MIN_PRICE']['PRINT_VALUE'] = $minPrice;
		$arResult['MIN_PRICE']['DISCOUNT_VALUE'] = $minPrice;
		$arResult['MIN_PRICE']['PRINT_DISCOUNT_VALUE'] = $minPrice;
		$arResult['CAN_BUY'] = true;
	}
	$arResult['CHECK_QUANTITY'] = (CMarketCatalog::UsesQuantity($arParams['IBLOCK_ID']) == 1);
	$arResult['CATALOG_QUANTITY'] = intval($arResult['PROPERTIES']['MARKET_QUANTITY']['VALUE']);
	
	if ($arResult['CHECK_QUANTITY'] && $arResult['CATALOG_QUANTITY'] <= 0) {
		$arResult['CAN_BUY'] = false;
	}
	$arResult['CATALOG_TYPE'] = 1; //simple product
}

Что делает этот код.

  • Выборка минимальной цены из имеющихся в Киоске с учётом права на просмотр.
  • Проверка количественного учёта.
  • Установка типа продукта для корректной работы шаблона и скриптов.

bitrix:catalog.section

в шаблоне компонента страницы раздела каталога находим файл result_modifier.php и в самый конец файла (до закрывающего тега ?> ) добавляем:

if (CModule::IncludeModule('yenisite.market')) {
	$arResult['CHECK_QUANTITY'] = (CMarketCatalog::UsesQuantity($arParams['IBLOCK_ID']) == 1);
	
	foreach ($arResult['ITEMS'] as $index => &$arItem) {
		$prices = CMarketPrice::GetItemPriceValues($arItem['ID'], $arItem['PRICES']);
		if (count($prices) > 0) {
			unset($arItem['PRICES']);
		}
		$minPrice = false;
		foreach ($prices as $k => $pr) {
			$pr = floatval($pr);
			$arItem['PRICES'][$k]['VALUE'] = $pr;
			$arItem['PRICES'][$k]['PRINT_VALUE'] = $pr;
			if ((empty($minPrice) || $minPrice > $pr) && $pr > 0) {
				$minPrice = $pr;
			}
		}
		if ($minPrice !== false) {
			$arItem['MIN_PRICE']['VALUE'] = $minPrice;
			$arItem['MIN_PRICE']['PRINT_VALUE'] = $minPrice;
			$arItem['MIN_PRICE']['DISCOUNT_VALUE'] = $minPrice;
			$arItem['MIN_PRICE']['PRINT_DISCOUNT_VALUE'] = $minPrice;
			$arItem['CATALOG_MEASURE_RATIO'] = 1;
			$arItem['CAN_BUY'] = true;
		}
		$arItem['CHECK_QUANTITY'] = $arResult['CHECK_QUANTITY'];
		$arItem['CATALOG_QUANTITY'] = CMarketCatalogProduct::GetQuantity($arItem['ID'], $arItem['IBLOCK_ID']);
		
		if ($arItem['CHECK_QUANTITY'] && $arItem['CATALOG_QUANTITY'] <= 0) {
			$arItem['CAN_BUY'] = false;
		}
		$arItem['CATALOG_TYPE'] = 1; //simple product
	}
	unset($arItem);
}

bitrix:catalog.top

в шаблоне компонента страницы топа каталога находим файл result_modifier.php и в самый конец файла (до закрывающего тега ?> ) добавляем:

if (CModule::IncludeModule('yenisite.market')) {
	$arResult['CHECK_QUANTITY'] = (CMarketCatalog::UsesQuantity($arParams['IBLOCK_ID']) == 1);

	foreach ($arResult['ITEMS'] as &$itemSection)
	{
		foreach ($itemSection as $index => &$arItem) {
			$prices = CMarketPrice::GetItemPriceValues($arItem['ID'], $arItem['PRICES']);
			if (count($prices) > 0) {
				unset($arItem['PRICES']);
			}
			$minPrice = false;
			foreach ($prices as $k => $pr) {
				$pr = floatval($pr);
				$arItem['PRICES'][$k]['VALUE'] = $pr;
				$arItem['PRICES'][$k]['PRINT_VALUE'] = $pr;
				if ((empty($minPrice) || $minPrice > $pr) && $pr > 0) {
					$minPrice = $pr;
				}
			}

			if ($minPrice !== false) {
				$arItem['MIN_PRICE']['VALUE'] = $minPrice;
				$arItem['MIN_PRICE']['PRINT_VALUE'] = $minPrice;
				$arItem['MIN_PRICE']['DISCOUNT_VALUE'] = $minPrice;
				$arItem['MIN_PRICE']['PRINT_DISCOUNT_VALUE'] = $minPrice;
				$arItem['CATALOG_MEASURE_RATIO'] = 1;
				$arItem['CAN_BUY'] = true;
			}
			$arItem['CHECK_QUANTITY'] = $arResult['CHECK_QUANTITY'];
			$arItem['CATALOG_QUANTITY'] = CMarketCatalogProduct::GetQuantity($arItem['ID'], $arItem['IBLOCK_ID']);
			
			if ($arItem['CHECK_QUANTITY'] && $arItem['CATALOG_QUANTITY'] <= 0) {
				$arItem['CAN_BUY'] = false;
			}
			$arItem['CATALOG_TYPE'] = 1; //simple product
		}
		unset($arItem);
	}
}

bitrix:catalog

в параметрах комплексного компонента необходимо указать путь к странице, на которой расположен компонент с большой корзиной Киоска: