Skip to content

Instantly share code, notes, and snippets.

@webag
Created August 20, 2020 13:03
Show Gist options
  • Save webag/bbfe5017714322b82686be1a39506868 to your computer and use it in GitHub Desktop.
Save webag/bbfe5017714322b82686be1a39506868 to your computer and use it in GitHub Desktop.
Следующий и предыдущий элемент битрикс, bitrix next prev
// Получаем следующий и предыдущий элемент
$query = CIBlockElement::GetList(
array('SORT' => 'ASC'),
array('IBLOCK_ID' => $arResult['IBLOCK_ID'],'ACTIVE' => 'Y'),
false,
array('nPageSize' => 1, 'nElementID' => $arResult['ID']),
array('ID', 'DETAIL_PAGE_URL','DETAIL_PICTURE','NAME')
);
while ($elem = $query->GetNextElement()) {
$arElements[] = $elem->GetFields();
}
switch(count($arElements))
{
case '3': //Сработает, когда справа и слева есть элементы
$arResult['NEXT_PAGE'] = array_pop($arElements);
$arResult['PREV_PAGE'] = array_shift($arElements);
break;
case '2': //Сработает либо на первом, либо на последнем элементе
$NEXT_PAGE = array_pop($arElements); // Последний элемент справа
$PREV_PAGE = array_shift($arElements); // Первый элемент слева
// тут проверяем, слева или справа будет текущий открытый элемент, его исключаем
if($PREV_PAGE["ID"] && $PREV_PAGE["ID"] != $arResult["ID"]) {
$arResult['PREV_PAGE'] = $PREV_PAGE;
$arResult['NEXT_PAGE'] = Array();
} elseif($NEXT_PAGE && $NEXT_PAGE != $arResult["ID"]) {
$arResult['PREV_PAGE'] = Array();
$arResult['NEXT_PAGE'] = $NEXT_PAGE;
} else {
$arResult['NEXT_PAGE'] = Array();
$arResult['PREV_PAGE'] = Array();
}
break;
default: //Если что-то пойдет не так, постраничка выводиться не будет
$arResult['NEXT_PAGE'] = Array();
$arResult['PREV_PAGE'] = Array();
}
// Получаем следующий и предыдущий элемент
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment