Skip to content

Instantly share code, notes, and snippets.

@artemsites
Forked from kvalexandr/Bitrix Next and Prev news.detail
Last active October 25, 2019 17:01
Show Gist options
  • Save artemsites/15b6007e8a3ba94868fde0d80004f02a to your computer and use it in GitHub Desktop.
Save artemsites/15b6007e8a3ba94868fde0d80004f02a to your computer and use it in GitHub Desktop.
Bitrix next and prev elements of news.detail. Следующий и предыдущий элемент в news.detail.
В result_modifier.php шаблона вставляем:
<?
/**
* Находим предыдущий и следующий элемент портфолио.
*/
// сортировку берем из параметров компонента
$arSort = array(
$arParams["SORT_BY1"] => $arParams["SORT_ORDER1"],
$arParams["SORT_BY2"] => $arParams["SORT_ORDER2"],
);
// выбрать нужно id элемента, его имя и ссылку. Можно добавить любые другие поля, например PREVIEW_PICTURE или PREVIEW_TEXT
$arSelect = array(
"ID",
"NAME",
"DETAIL_PAGE_URL",
"PROPERTY_36_CODE"//LOGO
);
// выбираем активные элементы из нужного инфоблока. Раскомментировав строку можно ограничить секцией
$arFilter = array(
"IBLOCK_ID" => $arResult["IBLOCK_ID"],
//"SECTION_CODE" => $arParams["SECTION_CODE"],
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
);
// выбирать будем по 1 соседу с каждой стороны от текущего
$arNavParams = array(
"nPageSize" => 1,
"nElementID" => $arResult["ID"],
);
$arItems = array();
$rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);
$rsElement->SetUrlTemplates($arParams["DETAIL_URL"]);
while ($obElement = $rsElement->GetNextElement()) {
$arItems[] = $obElement->GetFields();
}
// возвращается от 1го до 3х элементов в зависимости от наличия соседей, обрабатываем эту ситуацию
if (count($arItems) == 3) :
$arResult["TORIGHT"] = array(
"NAME" => $arItems[0]["NAME"],
"URL" => $arItems[0]["DETAIL_PAGE_URL"],
"LOGO" => $arItems[0]["~PROPERTY_36_CODE_VALUE"]
);
$arResult["TOLEFT"] = array(
"NAME" => $arItems[2]["NAME"],
"URL" => $arItems[2]["DETAIL_PAGE_URL"],
"LOGO" => $arItems[2]["~PROPERTY_36_CODE_VALUE"]
);
elseif (count($arItems) == 2) :
if ($arItems[0]["ID"] != $arResult["ID"])
$arResult["TORIGHT"] = array(
"NAME" => $arItems[0]["NAME"],
"URL" => $arItems[0]["DETAIL_PAGE_URL"],
"LOGO" => $arItems[0]["~PROPERTY_36_CODE_VALUE"]
);
else
$arResult["TOLEFT"] = array(
"NAME" => $arItems[1]["NAME"],
"URL" => $arItems[1]["DETAIL_PAGE_URL"],
"LOGO" => $arItems[1]["~PROPERTY_36_CODE_VALUE"]
);
endif;
// в $arResult["TORIGHT"] и $arResult["TOLEFT"] лежат массивы с информацией о соседних элементах
?>
<!-- В нужном месте шаблона детальной новости или статьи (template.php) вставляем следующий код: -->
<?if(is_array($arResult["TOLEFT"])):?>
<a href="<?=$arResult["TOLEFT"]["URL"]?>">
< <?=$arResult["TOLEFT"]["NAME"]?>
</a>
<?endif?>
<?if(is_array($arResult["TORIGHT"])):?>
<a href="<?=$arResult["TORIGHT"]["URL"]?>">
<?=$arResult["TORIGHT"]["NAME"]?> >
</a>
<?endif?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment