Skip to content

Instantly share code, notes, and snippets.

@EvilWolf
Created December 9, 2016 12:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EvilWolf/1b594a738f805f3a9109b9e0e7cfa634 to your computer and use it in GitHub Desktop.
Save EvilWolf/1b594a738f805f3a9109b9e0e7cfa634 to your computer and use it in GitHub Desktop.
Вывод соседних элементов в инфоблоке
<?php
$arOrder = array( /* Сортировка как в списке элементов. */
'SORT' => 'DESC',
'ACTIVE_FROM' => 'DESC',
);
$arFilter = array( /* Фильтр согласно списку элементов, у меня ещё используются и секции */
"IBLOCK_ID" => $arResult["IBLOCK_ID"],
"SECTION_ID" => $arResult["IBLOCK_SECTION_ID"],
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "Y",
);
$arSelect = array( /* Необходимые поля */
"ID",
"NAME",
"DETAIL_PAGE_URL"
);
$arNav = array( /* Конструкция которая ищет соседей */
'nElementID' => $arResult['ID'],
'nPageSize' => 1
);
$arItems = Array();
$rsElement = CIBlockElement::GetList($arOrder, $arFilter, false, $arNav, $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"]);
$arResult["TOLEFT"] = Array("NAME" => $arItems[2]["NAME"], "URL" => $arItems[2]["DETAIL_PAGE_URL"]);
elseif (count($arItems) == 2): /* Если есть только с одной стороны. */
if ($arItems[0]["ID"] != $arResult["ID"]) /* смотрим где находится текущий элемент. */
$arResult["TORIGHT"] = Array("NAME" => $arItems[0]["NAME"], "URL" => $arItems[0]["DETAIL_PAGE_URL"]);
else
$arResult["TOLEFT"] = Array("NAME" => $arItems[1]["NAME"], "URL" => $arItems[1]["DETAIL_PAGE_URL"]);
endif;
// в $arResult["TORIGHT"] и $arResult["TOLEFT"] лежат массивы с информацией о соседних элементах
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment