Получить предыдущий и следующий элементы
Задача
Выбрать предыдущий и следующий элемент по отношению к текущему, с учетом сортировки
Решение
<?php
// id инфоблока
$iblockId = 1;
// id элемента для которого ищем соседей
$elId = 31;
// поля для отбора
$arSelect = [
'ID',
'DETAIL_PAGE_URL'
];
// фильтрация
$arFilter = [
'IBLOCK_ID' => $iblockId,
'ACTIVE' => 'Y',
'SECTION_GLOBAL_ACTIVE' => 'Y'
];
// сортировка
$arOrder = ['ID' => 'ASC'];
// параметры навигации по выборке - ИМЕННО ЭТА НАСТРОЙКА РЕШАЕТ ЗАДАЧУ
$arNavStartParams = ['nPageSize' => 1, 'nElementID' => $elId];
$dbRes = CIBlockElement::GetList($arOrder, $arFilter, false, $arNavStartParams, $arSelect);
while($arRes = $dbRes->GetNext()){
\Bitrix\Main\Diag\Debug::dump($arRes);
}
?>