Как показать следующую и предыдущую новость в битриксе?
Этот довольно часто встречающийся кейс пока никак не реализован в самом битриксе, поэтому пишу этот пост больше для себя, чтобы решение этой проблемы где-то было под рукой.
Обычно такая потребность возникает на странице какого-то конкретного поста, для того чтобы после него вывести следующий и предыдущий за ним пост. Поэтому код ниже написан для комплексного компонента «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>