Created
August 20, 2020 13:03
-
-
Save webag/bbfe5017714322b82686be1a39506868 to your computer and use it in GitHub Desktop.
Следующий и предыдущий элемент битрикс, bitrix next prev
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Получаем следующий и предыдущий элемент | |
$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