Предыдущий, следующий товар
Пример запроса "соседних" товаров через параметр nElementID.
nElementID позволяет выбрать соседние товары (их кол-во определяет параметр nPageSize) с учетом сортировки и фильтра.
$productId = $arResult['ID']; // ID текущего товара $dbItems = CIBlockElement::GetList( array($arParams['SORT_BY1'] => $arParams['SORT_ORDER1'], $arParams['SORT_BY2'] => $arParams['SORT_ORDER2']), array('IBLOCK_ID' => $arParams['IBLOCK_ID'], 'ACTIVE' => 'Y'), // Еще стоит учитывать раздел 'SECTION_ID' => $sectionId, 'INCLUDE_SUBSECTIONS' => 'Y' false, array('nPageSize' => 1, 'nElementID' => $productId), array('ID', 'IBLOCK_ID', 'NAME', 'DETAIL_PAGE_URL') ); while ($arItem = $dbItems->GetNext()) { $arItems[] = $arItem; } foreach ($arItems as $i => $arItem){ if ($arItem['ID'] == $productId) { $prevElement = $arItems[$i-1]; // предыдущий $nextElement = $arItems[$i+1]; // следующий break; } }
Выписка из документации:
"nElementID" - ID элемента который будет выбран вместе со своими соседями. Количество соседей определяется параметром nPageSize. Например: если nPageSize равно 2-м, то будут выбраны максимум 5-ть элементов. Соседи определяются порядком сортировки заданным в параметре arOrder (см. выше).
При этом действуют следующие ограничения:
Если элемент с таким ID отсутствует в выборке, то результат будет не определен.
nElementID не работает, если задана группировка (см. параметр arGroupBy выше).
в параметре arSelect обязательно должено присутствовать поле "ID".
обязательно должна быть задана сортировка arOrder.
поля в сортировке catalog_* не учитываются и результат выборки становится не определенным.
в выборку добавляется поле RANK - порядковый номер элемента в "полной" выборке.
Необязательное. По умолчанию false - не ограничивать выводимые элементы.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.