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

Если нужно вывести все разделы, со всей доступной информацией о них, внутри элемента инфоблока, например в карточке товара каталога- можно воспользоваться API методом  CIBlockElement::GetElementGroups
 
Привет.
Интересное решение описывается в вашей статье. Но у меня ЧПУ #catalog/#SECTION_CODE#/
Видимо, поэтому и не работает.
Не подскажете, какие правки в код внести, чтобы работало на SECTION_CODE ?
 
Добрый день.
Михаил не могли бы помочь.
В result.modifier.php получаю все разделы элемента, но так как с GetElementGroups я не могу получить UF_ свойства, надо дальше прогнать GetList

Код
foreach ($arResult['ITEMS'] as $key => $arItem)
{
    $arSectionList = array();
    $rsSections = CIBlockElement::GetElementGroups($arItem['ID']);
    while ($arSection = $rsSections->GetNext())
    {
        $arSectionList[] = array(
            'ID' => $arSection['ID'],
            'NAME' => $arSection['NAME'],
            'SECTION_PAGE_URL' => $arSection['SECTION_PAGE_URL'],
        );
    }
    $arItem['SECTION_LIST'] = $arSectionList;
    $arResult['ITEMS'][$key] = $arItem;
}



$arSection = CIBlockSection::GetList(
    Array(  ),
    Array(
        "ACTIVE" => "Y",
        "IBLOCK_ID" => 2,
        "ID" => $arSection['ID'],     
    ),
    false,
    Array(
        "ID",
        "UF_*"
    )
)->fetch();


Не получаю то, что мне нужно. Понимаю что не так сделал , не силен в этом.
Как мне добавить в полученный массив SECTION_LIST к каждому элементу дополнительно все свойства UF_
не могли бы помочь? Спасибо
 
Если уж, все равно используете CIBlockSection::GetList - может только его и оставить? Смысл проделывать двойной прогон?
И GetNext вместо Fetch
Изменено: Михаил Базаров - 02.04.2025 14:29:33
 
Удалось реализовать связкой GetElementGroups  и CIBlockSectionGetList, я так и не допер как можно решить вопрос только лиш с CIBlockSection::GetList, я не могу получить список всех разделов к которым привязан элемент.
Можете показать пример решения пожалуйста или направить в нужную сторону?

Хочется понять как можно было только с CIBlockSectionGetList
Изменено: Михаил Базаров - 02.04.2025 14:29:44
 
Дай бог тебе здоровья. Выручил в очередной раз)))
 
Михаил, а добавить к этому решению вывод разделов в алфавитном порядке не планируется? Подскажите как правильно применить.
 
Вот так, работоспособность проверена.
Только учтите, что будет сортировка именно по названию раздела, а не по его SECTION_META_TITLE
Код
$ElementId = $arResult['ID'];
$db_groups = CIBlockElement::GetElementGroups($arResult['ID'], true);
while ($ar_group = $db_groups->Fetch()) {
    $arGroups[] = $ar_group["ID"]; // Создаем массив с группами
}
$dbRes = CIBlockSection::GetList(
    array(
        'NAME' => 'ASC', // И прочие виды сортировок
    ),
    array(
        'IBLOCK_ID' => $arResult['IBLOCK_ID'], // Для скорости, что бы не перебирало все инфоблоки
    ),
    false,
    array (
        'ID',
        'NAME',
        'SECTION_PAGE_URL'
    )
);
while ($arDbRes = $dbRes->GetNext()) {
    if (!in_array($arDbRes['ID'], $arGroups)) {
        continue; // Если группы нет в массиве продолжаем, иначе выводим
    }
    $ipropValues = new \Bitrix\Iblock\InheritedProperty\SectionValues(
        $arResult['IBLOCK_ID'],
        $arDbRes["ID"]
    );?>
    <a href="<?echo $arDbRes['SECTION_PAGE_URL'];?>">
        <?echo $ipropValues->getValues()['SECTION_META_TITLE']?>
    </a>
    <?
}
Изменено: Михаил Базаров - 18.05.2023 09:29:39
 
Спасибо, на вашем сайте всегда нахожу подходящие решения!
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Блог-note: заметки разработчика

Сравнение двух типов цен для иммитации системы скидок, в Битрикс

Встала задачка, иммититровать систему скидок в интернет магазине на Битрикс. Из 1С-УТ, на сайт, выгружается два типа цен...

Показать доступный остаток каждого товара в корзине 1С-Битрикс

Задача: показать остаток каждого товара в корзине 1С-Битрикс, что бы покупатель сразу знал предельное колличество товара...

Заполнить поля пользователя из свойства заказа, на примере ФИО

При создании заказа покупатель заполняет поле "ФИО". Необходимо скопировать эти данные в профиль пользователя (не путать...

Открытие мобильного приложения Apache Cordova по ссылке

Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: при отправке ссылки на электоро...

Удалить все картинки элементов инфоблока: анонс, детальную и дополнительные картинки (MORE_PHOTO)

Задача: В инфоблоке 10 000 элементов, нужно удалить картинки анонса, детальные и дополнительные картинки из свойства MOR...

Фильтрация разделов каталога с помощью умного фильтра

Задача: В каталоге выводится умный фильтр, нужно сделать так чтобы он применялся не только к товарам но и к компоненту &...

Данные о заказе текущего пользователя

Иногда нужно получить данные о заказе текущего пользователя. Не через компонент, а непосредственно через API Битрикс. Ва...

FTP доступ на Виртуальной машине Битрикс

Бывает что нужно открыть FTP доступ к заранее известной папке на сайте под управлением 1С Битрикс, который работает на в...

Адаптивное гамбургер меню для битрикс

Заметка коротенькая, но решил оставить ее - так как самому часто нужно нечто подобное. В архиве готовый шаблон для Битри...