Битрикс. Скрываем товары из вывода в каталоге, которые есть в наличии, но без цен

Часто бывает, что у товаров в 1С не проставляют цены или забывают либо цена еще не утвержден, особенно с товарными предложениями. 

В итоге после синхронизации 1С с интернет-магазином мы получаем товары у которых нет цен, но они есть на складе, у некоторых предложений есть цены, у других.

Убираем с вывода в каталоге товары, в том числе с торговыми предложениями, которые есть на складе, но без цен.

Вставляем код перед вызовом компонента bitrix:catalog:

		
		<?php

// ID инфоблока торговых предложений
$OFFERS_IBLOCK_ID = 26;

// Фильтр по SKU с ценой и количеством
$arOfferFilter = [
    "ACTIVE" => "Y",
    "IBLOCK_ID" => $OFFERS_IBLOCK_ID,
    ">CATALOG_QUANTITY" => 0,
    ">CATALOG_PRICE_3" => 0 // ID цены
];

$validProductIDs = [];

$res = CIBlockElement::GetList([], $arOfferFilter, false, false, ["ID", "PROPERTY_CML2_LINK"]);
while ($offer = $res->Fetch()) {
    $validProductIDs[] = $offer["PROPERTY_CML2_LINK_VALUE"];
}

// Основной фильтр для компонента
$GLOBALS['arrFilter'] = [
    "ID" => array_unique($validProductIDs),
    "ACTIVE" => "Y"
];
?>	
	

Количество просмотров: 4


Понравилась статья?

Возврат к списку