Как показать следующую и предыдущую новость в битриксе?

Этот довольно часто встречающийся кейс пока никак не реализован в самом битриксе, поэтому пишу этот пост больше для себя, чтобы решение этой проблемы где-то было под рукой.
Обычно такая потребность возникает на странице какого-то конкретного поста, для того чтобы после него вывести следующий и предыдущий за ним пост. Поэтому код ниже написан для комплексного компонента «news», вставлять его надо в файле detail.php. Как всегда не претендую на оптимальность, но мою потребность он легко закрывает)

<?
	$rs=CIBlockElement::GetList(array("active_from" => "desc"), array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arParams["IBLOCK_ID"]), false, array("nElementID"=>$ElementID, "nPageSize"=>1), array("ID", "NAME", "DETAIL_PAGE_URL"));
	while($ar=$rs->GetNext()) $page[] = $ar;
?>
<div>
	<?if (count($page) == 2 && $ElementID == $page[0][ID]):?>
		<div class="_next">
			<a href="<?=$page[1]["DETAIL_PAGE_URL"]?>">
				<?=$page[1]["NAME"]?>
			</a>
		</div>
	<?elseif (count($page) == 3):?>
		<div class="_prev">
			<a href="<?=$page[0]["DETAIL_PAGE_URL"]?>">
				<?=$page[0]["NAME"]?>
			</a>
		</div>
		<div class="ps-_next">
			<a href="<?=$page[2]["DETAIL_PAGE_URL"]?>">
				<?=$page[2]["NAME"]?>
			</a>
		</div>
	<?elseif (count($page) == 2 && $ElementID == $page[1][ID]):?>
		<div class="_prev">
			<a href="<?=$page[0]["DETAIL_PAGE_URL"]?>">
				<?=$page[0]["NAME"]?>
			</a>
		</div>
	<?endif;?>
</div>
Поделиться
Отправить
Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное