Korusol
6/3/2014 - 11:41 AM

Вывод соседних элементов

Вывод соседних элементов

/* Вывод 2-х соседних товаров */

// сортировку берем из параметров компонента
$arSort = array(
	$arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"],
	$arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"],
);

// выбрать нужно id элемента
$arSelect = array(
	"ID",
);

// выбираем активные элементы из нужного инфоблока. Раскомментировав строку можно ограничить секцией
$arFilter = array (
	"IBLOCK_ID" => $arResult["IBLOCK_ID"],
	"SECTION_ID" => $arResult['IBLOCK_SECTION_ID'],
	"ACTIVE" => "Y",
	"CHECK_PERMISSIONS" => "Y",
);

//выбираем по 4 чтобы всегда можно было вывести 4 товара
$arNavParams = array(
	"nPageSize" => 4,
	"nElementID" => $arResult["ID"],
);

$arItems = Array();
$rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);

$Side = 'LEFT';
while($obElement = $rsElement->fetch()){
	if ($obElement['ID'] == $arResult['ID']) {
   		$Side = 'RIGHT';
		continue;
	}
	$arResult['NEAR_ELEMENTS'][$Side][] = $obElement;
}


$arrLeft = $arResult['NEAR_ELEMENTS']['LEFT'];

//меняю местами ключи массива соседей слева, чтобы не делать лишних проверок когда товаров меньше 7
foreach ($arrLeft as $key => $val){
	$i = count($arResult['NEAR_ELEMENTS']['LEFT'])-1;
	$arrLeftSort[$i-$key] = $val;
	$i--;
}

$countleft = count($arResult['NEAR_ELEMENTS']['LEFT']);
$countRight = count($arResult['NEAR_ELEMENTS']['RIGHT']);

if($countleft == 1){
	$arResult["IDNEAR"] = Array($arrLeftSort[0]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][0]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][1]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][2]['ID']);
}elseif($countleft == 0){
	$arResult["IDNEAR"] = Array($arResult['NEAR_ELEMENTS']['RIGHT'][0]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][1]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][2]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][3]['ID']);
}elseif($countRight == 1){
	$arResult["IDNEAR"] = Array($arResult['NEAR_ELEMENTS']['RIGHT'][0]['ID'], $arrLeftSort[0]['ID'], $arrLeftSort[1]['ID'], $arrLeftSort[2]['ID']);
}
elseif($countRight == 0){
	$arResult["IDNEAR"] = Array($arrLeftSort[0]['ID'], $arrLeftSort[1]['ID'], $arrLeftSort[2]['ID'], $arrLeftSort[3]['ID']);
}else{
	$arResult["IDNEAR"] = Array($arrLeftSort[0]['ID'], $arrLeftSort[1]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][0]['ID'], $arResult['NEAR_ELEMENTS']['RIGHT'][1]['ID']);
}