Предыдущий, следующий товар

160
Алексей,

Пример запроса "соседних" товаров через параметр 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 - не ограничивать выводимые элементы.

Опубликовано 28 Апреля 2020 | Обновлено 11 Мая 2020
разработчику, готовый код
Похожие статьи
Как получить ограничения доставки по платежным системам 0
Понадобилось вне компонента оформления заказа показать какие способы оплаты доступны для той или ино...
Читать дальше »
Алексей,
Конвертация картинок в webp на битриксе 0
Картинки в формате WebP "весят" значительно меньше, а сам формат уже поддерживается многим...
Читать дальше »
Алексей,
Комментарии