Каждый, кто когда-либо задумывался о улучшении юзабилити сайта, так или иначе затрагивал данную тему. Ведь переход к следующему товару или статье на сайте, не выходя из текущей, уже давно считается правилом хорошего тона.

Давайте рассмотрим один из вариантов реализации поставленной задачи.

Для начала шаблоне детального элемента каталога или в детальной новости создадим файл 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' => 1
 )
);
$nearElementsSide = 'LEFT';
while ($arElem = $res->GetNext()) {
 if ($arElem['ID'] == $arResult['ID']) {
 $nearElementsSide = 'RIGHT';
 continue;
 }
 $arResult['NEAR_ELEMENTS'][$nearElementsSide][] = $arElem;
}
?>

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

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

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

  1. LEFT — предыдущие элементы
  2. RIGHT — последующие элементы
Остается только вставить их в подходящее место в шаблоне и прописать подходящие стили.
Готовы сделать всю работу за Вас
от750
  • 60 минут

  • Базовая настройка стилей
  • Вывод дополнительных свойств


Поработаем?

Опишите свой запрос, мы расчитаем стоимость вашей задачи.