Меню
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: заметки разработчика

Простые калькуляторы в карточке товара каталога на Битрикс

На одном из создаваемых сайтов было необходимо сделать небольшой калькулятор и предварительным подсчетом стоимости услуг...

Добавление своих полей в почтовые шаблоны Битрикс

Иногда нужно внести свои поля в почтовые шаблоны битрикс. Например: добавить имя и номер телефона заказчика в почтовый ш...

Проверка на наличие элементов, текущего пользователя, в заданном инфоблоке.

Если стоит задача, определить наличие элементов созданных пользователем на сайте. Можно воспользоваться API: CUser и CIB...

Вывод даты создания элемента в правильном формате в Битрикс

Если нужно вывести дату создания новости, статьи или товара в каталоге, в принципе любого элемента инфоблока- можно восп...

Почтовое событие на создание нового элемента инфоблока, через API

Иногда при разработке сайта требуется реализовать функционал добавления элементов инфоблока простыми пользователям.Будет...

Добавление в избранное или отложенные, на AJAX из карточки товара

В этой заметке рассакажу как добавлять товары в "Отложенные", для иммитации функционала "Избранное". Для этого будем исп...

Настройка выгрузки товаров в Яндекс Маркет с сайта Битрикс

Настройка выгрузки в Яндекс маркет в формате yml, выполняется достаточно просто, кроме одной заморочки: в типовой постав...

Бонус за выполненный заказ на внутренний счет пользователя

Задача: после того как заказ, в интернет-магазине, перешел в статус "Выполнен" начислить пользователю 5% от стоимости за...

Бонус на внутренний счет пользователя по информации из 1С

Задача: 1С-Предприятие каждый день выгружает HL справочник на сайт с количеством бонусов контрагента в виде "XML-ID...