Вывод соседних элементов в шаблоне детального элемента каталога Битрикс

Рассмотрим пример каталога, где нет страницы со списком элементов. Когда мы переходим в раздел, нас редиректит на страницу первого элемента каталога, и на ней уже расположены ссылки на соседние элементы — предыдущие и последующие.

В шаблоне детального элемента каталога создадим файл result_modifier.php, в него добавим код

$res = CIBlockElement::GetList(
 array(
 'sort' => 'asc'
 ),
 array(
 'IBLOCK_ID' => 1, // здесь ID инфоблока, в котором находится элемент
 'ACTIVE' => 'Y',
 'SECTION_ID' => $arResult['IBLOCK_SECTION_ID']
 ),
 false,
 array(
 'nElementID' => $arResult['ID'],
 'nPageSize' => 2
 )
);
$nearElementsSide = 'LEFT';
while ($arElem = $res->GetNext()) {
 if ($arElem['ID'] == $arResult['ID']) {
 $nearElementsSide = 'RIGHT';
 continue;
 }
 $arResult['NEAR_ELEMENTS'][$nearElementsSide][] = $arElem;
}

Функцией GetList мы выбираем элементы. Элемент массива ‘nPageSize’ => 2 означает сколько элементов выводить справа и слева от текущего. В данном случае всего будет выведено 5 элементов: 2 предыдущих, 1 текущий и 2 следующих, в том случае, если такие элементы есть. Если же текущий элемент идет первый по счету, то выведется 3 элемента (без предыдущих). Аналогично, если элемент последний, последующих элементов у него не будет.

Переменная $nearElementsSide была введена, чтобы разбить элементы в массиве $arResult[‘NEAR_ELEMENTS’] на предыдущие и последующие, для большего удобства.

Теперь в шаблоне детального элемента каталога будет доступен массив $arResult[‘NEAR_ELEMENTS’] в котором будут два ключа:

  1. LEFT — предыдущие элементы
  2. RIGHT — последующие элементы

Похожие статьи

Статья оказалась полезной? Вырази благодарность - поделись в соцсетях

Отзывы : 2 комментария

  1. Добрый день.
    Не подскажите как организовать экспорт и импорт товара если есть в товаре привязка к товару из этого же иб.

    • Здравствуйте.
      Какая редакция Битрикс? Импорт данных в CSV или XML или все равно?

Комментирование отключено