Меню
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С-Битрикс

Задача: получить и вывести все цены товара по его ID в каталоге 1С-Битрикс (например, в детальной карточке catalog.e...

Time Capsule на Windows 10. Хранение бекапов Time Machine на компьютере с Windows 10

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

Автоматически помечаем новинки лейблом в каталоге битрикс

Если вы хотите помечать новинки каталога, вашего магазина на Битрикс, лейблом "Новинка". И так, что бы это происходило а...

СЕО настройки сайта перед запуском

В видео рассказано о первоначальной СЕО настройке сайта перед запуском. Все показанное является компилицией из собственн...

Получить цены товаров с помощью D7-ORM в 1С-Битрикс

Веб-разработка часто требует работы с базой данных для получения и обработки информации о товарах, в том числе и их цен...

Заполнить свойство инфоблока ценой из торгового каталога

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

Вывести новости из конкретного раздела инфоблока Битрикс

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

Добавление не существующего товара в корзину и заказ, 1С-Битрикс

Задача: нужно добавить в корзину товар, которого не существует в каталоге, с возможностью задать ему произвольные назван...

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

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