$arSort = array( // сортировка из параметров компонента $arParams["SORT_BY1"]=>$arParams["SORT_ORDER1"], $arParams["SORT_BY2"]=>$arParams["SORT_ORDER2"], ); $arSelect = array( // выбирать будем несколько необходимых полей "ID", ); $arNavParams = array( "nPageSize" => 1, // выбираем по 1 элементу с каждой стороны от текущего "nElementID" => $GLOBALS['arFiltr']['ID'], // тот элемент, соседей которого ищем ); $arItems = Array(); $rsItems = CIBlockElement::GetList($arSort, array('IBLOCK_ID'=>$arParams["IBLOCK_ID"]), false, $arNavParams, $arSelect); $rsItems->SetUrlTemplates($arParams["DETAIL_URL"]); while($obItem = $rsItems->GetNextElement()) { $arItem = $obItem->GetFields(); $arItems[] = $arItem; } if(count($arItems)==3){ // если выборка вернула 3 элемента, значит есть оба соседа $arResult["PREV_NEXT_NAV"]["PREV_ITEM"] = $arItems[0]; $arResult["PREV_NEXT_NAV"]["NEXT_ITEM"] = $arItems[2]; }elseif(count($arItems)==2){ // если 2 - то соседний элемент только 1 if($arItems[0]["ID"]!=$arResult["ID"]){ // определяем, слева он или справа $arResult["PREV_NEXT_NAV"]["PREV_ITEM"] = $arItems[0]; }else{ $arResult["PREV_NEXT_NAV"]["NEXT_ITEM"] = $arItems[1]; } }