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

2k
Алексей,

Пример запроса "соседних" товаров через параметр nElementID

Пример запроса "соседних" товаров через параметр 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 на битриксе
Картинки в формате WebP "весят" значительно меньше, а сам формат уже поддерживается многим...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Пример запроса "соседних" товаров через параметр nElementID