Список товаров с торговыми предложениями

Home » Bitrix » bitrix рецепты » Список товаров с торговыми предложениями
bitrix рецепты Комментариев нет
<? $show_recomended = true; if($show_recomended){ // ^^ надо бы кеширвоать! // получаем информацию о просмотренных товаров $arFilter = array('IBLOCK_ID' => IBLOCK_ID_CATALOG, 'ACTIVE' => 'Y', '!PROPERTY_RECOMMENDED' => false); $arSelect = array('ID','CODE','NAME','PREVIEW_PICTURE','DETAIL_PAGE_URL','PROPERTY_PRICE_BEFORE'); $db = CIBlockElement::GetList(array("RAND" => "ASC"), $arFilter, false, array('nTopCount'=>3), $arSelect); $arItems = array(); $ids = array(); while($arItem = $db->GetNext()){ $ids[] = $arItem['ID']; $arItems[] = $arItem; } $arSelect = array('ID','CODE','NAME','PREVIEW_PICTURE','DETAIL_PAGE_URL','PROPERTY_PRICE_BEFORE'); $arItemsOffers = CCatalogSKU::getOffersList($ids,IBLOCK_ID_CATALOG,array(),$arSelect,array('CODE' => 'SIZE')); $offer_ids = array(); foreach($arItemsOffers as $k){ foreach($k as $v){ $offer_ids[] = $v['ID']; } } // получаем цены для OFFERS и простых товаров $arFilter = array( "PRODUCT_ID" => array_merge(array_diff($ids,array_keys($arItemsOffers)),$offer_ids), ); $db = $dbProductPrice = CPrice::GetListEx(array(), $arFilter, false, false); $arItemsPrices = array(); while($arOffer = $db->GetNext()){ $arItemsPrices[$arOffer['PRODUCT_ID']] = $arOffer; } // склеиваемем OFFERS + цена ИЛИ цены для простых товаров foreach($arItems as $k => &$arItem){ if(!empty($arItemsOffers[$arItem['ID']])){ $arItem['OFFERS'] = $arItemsOffers[$arItem['ID']]; // склеиваемем цены для OFFERS foreach($arItem['OFFERS'] as &$v){ if(!empty($arItemsPrices[$v['ID']])){ $v['PRICE'] = $arItemsPrices[$v['ID']]; } }unset($v); }elseif(!empty($arItemsPrices[$arItem['ID']])){ $arItem['PRICE'] = $arItemsPrices[$arItem['ID']]; } }unset($arItem); if(!empty($arItems)){ ?> <div class="basket-featured-products"> <div class="h3">Мы рекомендуем</div> <ul class="basket-featured-products-list"> <? foreach($arItems as $arItem){ ?> <li> <div class="item-top"> <? $img = !empty($arItem['PREVIEW_PICTURE']) ? CFile::ResizeImageGet($arItem['PREVIEW_PICTURE'], array('width'=>130,'height'=>130), BX_RESIZE_IMAGE_PROPORTIONAL, true) : array('src' => '/images/nophoto.png'); ?> <div class="item-img"> <img src="<?=$img['src']?>" alt="<?=$arItem['NAME']?>" /> </div> <div class="item-name"> <a href="<?=$arItem['DETAIL_PAGE_URL']?>"><?=$arItem['NAME']?></a> </div> <div class="item-price"><? if(!empty($arItem['OFFERS'])){ $offer = reset($arItem['OFFERS']); $price = $offer['PRICE']['PRICE']; $price_before = !empty($offer['PROPERTY_PRICE_BEFORE_VALUE']) ? $offer['PROPERTY_PRICE_BEFORE_VALUE'] : $price; }elseif(!empty($arItem['PRICE']['PRICE'])){ $price = $arItem['PRICE']['PRICE']; $price_before = !empty($arItem['PROPERTY_PRICE_BEFORE_VALUE']) ? $arItem['PROPERTY_PRICE_BEFORE_VALUE'] : $price; } ?> <span class="prod-item-price-new"> <?=CurrencyFormat($price,'RUB')?> </span> <? if($price != $price_before){ ?> <span class="prod-item-price-old"> <?=CurrencyFormat($price_before,'RUB')?> </span> <? } ?> </div> </div> <a href="<?=$arItem['DETAIL_PAGE_URL']?>" class="item-add btn btn-style-4">Просмотр</a> </li> <? } ?> </ul> </div> <? } } ?>