Вывод соседних элементов
/* Вывод 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']);
}