Если нужно вывести все разделы, со всей доступной информацией о них, внутри элемента инфоблока, например в карточке товара каталога- можно воспользоваться 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- для постороенния ссылки и название.
В общем-то и все, Остается это сверстать под свой дизайн.
Поддержать выпуски видео уроков, поблагодарить за полезную инструкцию или заметку можно через:
Юманей

Цитата |
---|
Роман Селькин написал: $sectionFullPath = CIBlockSection::GetNavChain(false,$ar_group['ID']); while($arSectionPath = $sectionFullPath->GetNext()){ print_r($arSectionPath) } } |
Код |
---|
$ElementId = $arResult['ID']; $db_groups = CIBlockElement::GetElementGroups($ElementId, true); while($ar_group = $db_groups->Fetch()) { $sectionFullPath = CIBlockSection::GetNavChain(false,$ar_group['ID']); while($arSectionPath = $sectionFullPath->Fetch()){ print_r($arSectionPath) } } |


Цитата |
---|
Роман Селькин написал: Опять ошибка скрипта. |

Цитата | ||
---|---|---|
Михаил Базаров написал:
|
Код |
---|
Array ( [ID] => 98 [TIMESTAMP_X] => 2020-05-30 22:20:50 [MODIFIED_BY] => 1 [DATE_CREATE] => 2020-05-30 13:01:54 [CREATED_BY] => 1 [IBLOCK_ID] => 3 [IBLOCK_SECTION_ID] => [ACTIVE] => Y [GLOBAL_ACTIVE] => Y [SORT] => 502 [NAME] => Постельные принадлежности [PICTURE] => 12747 [LEFT_MARGIN] => 27 [RIGHT_MARGIN] => 60 [DEPTH_LEVEL] => 1 [DESCRIPTION] => [DESCRIPTION_TYPE] => text [SEARCHABLE_CONTENT] => ПОСТЕЛЬНЫЕ ПРИНАДЛЕЖНОСТИ [CODE] => postelnye-prinadlezhnosti [XML_ID] => [TMP_ID] => [DETAIL_PICTURE] => 12748 [SOCNET_GROUP_ID] => [LIST_PAGE_URL] => #SITE_DIR#/catalog/ [SECTION_PAGE_URL] => #SITE_DIR#/catalog/#SECTION_CODE_PATH#/ [IBLOCK_TYPE_ID] => nt_magnet_catalog [IBLOCK_CODE] => nt_magnet_catalog [IBLOCK_EXTERNAL_ID] => nt_magnet_catalog_s1 [EXTERNAL_ID] => ) Array ( [ID] => 98 [TIMESTAMP_X] => 2020-05-30 22:20:50 [MODIFIED_BY] => 1 [DATE_CREATE] => 2020-05-30 13:01:54 [CREATED_BY] => 1 [IBLOCK_ID] => 3 [IBLOCK_SECTION_ID] => [ACTIVE] => Y [GLOBAL_ACTIVE] => Y [SORT] => 502 [NAME] => Постельные принадлежности [PICTURE] => 12747 [LEFT_MARGIN] => 27 [RIGHT_MARGIN] => 60 [DEPTH_LEVEL] => 1 [DESCRIPTION] => [DESCRIPTION_TYPE] => text [SEARCHABLE_CONTENT] => ПОСТЕЛЬНЫЕ ПРИНАДЛЕЖНОСТИ [CODE] => postelnye-prinadlezhnosti [XML_ID] => [TMP_ID] => [DETAIL_PICTURE] => 12748 [SOCNET_GROUP_ID] => [LIST_PAGE_URL] => #SITE_DIR#/catalog/ [SECTION_PAGE_URL] => #SITE_DIR#/catalog/#SECTION_CODE_PATH#/ [IBLOCK_TYPE_ID] => nt_magnet_catalog [IBLOCK_CODE] => nt_magnet_catalog [IBLOCK_EXTERNAL_ID] => nt_magnet_catalog_s1 [EXTERNAL_ID] => ) Array ( [ID] => 100 [TIMESTAMP_X] => 2020-05-30 23:05:05 [MODIFIED_BY] => 1 [DATE_CREATE] => 2020-05-30 13:15:09 [CREATED_BY] => 1 [IBLOCK_ID] => 3 [IBLOCK_SECTION_ID] => 98 [ACTIVE] => Y [GLOBAL_ACTIVE] => Y [SORT] => 500 [NAME] => Детские комплекты в кроватку [PICTURE] => 12750 [LEFT_MARGIN] => 28 [RIGHT_MARGIN] => 29 [DEPTH_LEVEL] => 2 [DESCRIPTION] => [DESCRIPTION_TYPE] => text [SEARCHABLE_CONTENT] => ДЕТСКИЕ КОМПЛЕКТЫ В КРОВАТКУ [CODE] => detskie-komplekty-v-krovatku [XML_ID] => [TMP_ID] => [DETAIL_PICTURE] => [SOCNET_GROUP_ID] => [LIST_PAGE_URL] => #SITE_DIR#/catalog/ [SECTION_PAGE_URL] => #SITE_DIR#/catalog/#SECTION_CODE_PATH#/ [IBLOCK_TYPE_ID] => nt_magnet_catalog [IBLOCK_CODE] => nt_magnet_catalog [IBLOCK_EXTERNAL_ID] => nt_magnet_catalog_s1 [EXTERNAL_ID] => ) |

Разделы вывели, все хорошо. Но так же и выводятся неактивные разделы. Как нам убрать неактивные разделы?

Цитата |
---|
Роман Селькин пишет: CIBlockElement::GetElementGroups |
Код |
---|
$db_groups = CIBlockElement::GetElementGroups($ElementId, Array('ACTIVE' => 'Y')); while($ar_group = $db_groups->Fetch()) { $sectionFullPath = CIBlockSection::GetNavChain(false,$ar_group['ID']); while($arSectionPath = $sectionFullPath->Fetch()){ print_r($arSectionPath) } |
Правда не совсем получается, ЧПУ #SECTION_CODE_PATH#, дублируется родительский раздел, может кто-то подскажет как сделать?
Код |
---|
$db_groups = CIBlockElement::GetElementGroups($arResult['ID'], true); while($ar_group = $db_groups->Fetch()) { $sectionFullPath = CIBlockSection::GetNavChain(false,$ar_group["ID"]); while($arSectionPath = $sectionFullPath->GetNext()){ echo '<p><a class="btn btn-default" href="'.$arSectionPath['SECTION_PAGE_URL'].'">'.$arSectionPath['NAME'].'</a></p>'; } } |

Цитата | ||
---|---|---|
Гость написал: Добрый день, в первую очередь хочу поблагодарить за все заметки — сподвигли на изучение) Правда не совсем получается, ЧПУ #SECTION_CODE_PATH#, дублируется родительский раздел, может кто-то подскажет как сделать?
|
Не очень понял, сейчас негде проверить. То есть корневой раздел два раза попадает в url?
В настройках компонента и самого инфоблока все одинаково прописано по путям?
Цитата | ||||
---|---|---|---|---|
написал:
Не очень понял, сейчас негде проверить. То есть корневой раздел два раза попадает в url? В настройках компонента и самого инфоблока все одинаково прописано по путям? |
Код |
---|
$db_groups = CIBlockElement::GetElementGroups($arResult['ID'], true); while($ar_group = $db_groups->Fetch()) { $res = CIBlockSection::GetByID($ar_group["ID"]); if($ar_res = $res->GetNext()) { echo '<a href="'.$ar_res['SECTION_PAGE_URL'].'">'.$ar_res['NAME'].'</a>'; } } |