Вывести все разделы в которых находится элемент инфоблока

Вывести все разделы в которых находится элемент инфоблока
Просмотров: 511 | Комментариев: 2

Если нужно вывести все разделы, со всей доступной информацией о них, внутри элемента инфоблока, например в карточке товара каталога- можно воспользоваться API методом CIBlockElement::GetElementGroups

Перелинковка на разделы, в которых находится элемент каталога

Например: У нас есть каталог товаров, элементы которого могут находиться сразу в нескольких разделах инфоблока. Внутри карточки товара, мы хотим вывести ссылки на все разделы, в которых эта каточка находится. Что бы пользователям-покупателям было удобно отбирать товары

Пусть, визуально, это будет выглядеть так. Настройки ЧПУ для разделов инфоблока /catalog/#SECTION_ID#/

Для этого достаточно вывести названия и ID всех разделов в которых находится товар и сверстать.
Воспользуемся API методом CIBlockElement::GetElementGroups.

$ElementId = $arResult['ID'];
    $db_groups = CIBlockElement::GetElementGroups($ElementId, true);
    while($ar_group = $db_groups->Fetch()) {
        echo 'Все товары: <a href="/catalog/'. $ar_group["ID"] . '/">';
        echo $ar_group["NAME"];
        echo "</a>";
}

В коде, я не использую фильтр, в $ar_group хранится вообще вся информация о разделах: картинка, символьный код, дата создания итд. Но вывожу только ID- для постороенния ссылки и название.

В общем-то и все, Остается это сверстать под свой дизайн.

Stanislav2636
Привет.
Интересное решение описывается в вашей статье. Но у меня ЧПУ #catalog/#SECTION_CODE#/
Видимо, поэтому и не работает.
Не подскажете, какие правки в код внести, чтобы работало на SECTION_CODE ?
Михаил Базаров
Цитата
Stanislav2636 пишет:
echo 'Все товары: ';
Попоробуйте в этой строчке

Код
 echo 'Все товары: <a href="/catalog/'. $ar_group["ID"] . '/">'; 

Поменять ID на SECTION_CODE, по идее он тоже сюда передается
Или, получить SECTION_CODE зная ID раздела


Код
$arResult["SECTION_INFO"] = array();
$obSection = CIBlockSection::GetList(array(), "ID"=>$arSectionID); // где $arSectionID собранный вами массив
while($arSection = $obSection->Fetch();)
   $arResult["SECTION_INFO"][$arSection["ID"]] = $arSection;