Группировка свойств в инфоблоке Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Группировка свойств в инфоблоке Битрикс
Свойства «по разделам» в одном инфоблоке Битрикс: руководство (с примерами и кодом)


В 1С-Битрикс свойства принадлежат инфоблоку целиком, а «персонализация по разделам» делается через привязки свойств к разделам  с наследованием. Вы настраиваете, какие свойства доступны/видны в  конкретном разделе (в форме редактирования и в умном фильтре). Есть  «глобальная» привязка ко всем разделам и локальные переопределения.
Получение свойств для раздела с учётом наследования
Код
<?php
// Получение всех свойств раздела (включая унаследованные) с детальной информацией
function getSectionPropertiesWithInheritance($iblockId, $sectionId)
{
    Loader::includeModule('iblock');
    
    $properties = [];
    
    // Получаем привязки с наследованием
    $propertyLinks = \CIBlockSectionPropertyLink::GetArray($iblockId, $sectionId);
    
    if (empty($propertyLinks)) {
        return $properties;
    }
    
    // Получаем полную информацию о свойствах
    $propertyIterator = \CIBlockProperty::GetList(
        [], 
        ['IBLOCK_ID' => $iblockId, 'ID' => array_keys($propertyLinks)]
    );
    
    while ($property = $propertyIterator->Fetch()) {
        $propertyId = (int)$property['ID'];
        $properties[$propertyId] = [
            'PROPERTY_INFO' => $property,
            'LINK_INFO' => $propertyLinks[$propertyId],
            'IS_INHERITED' => isset($propertyLinks[$propertyId]['INHERITED']) 
                             && $propertyLinks[$propertyId]['INHERITED'] === 'Y'
        ];
    }
    
    return $properties;
}

// Использование:
$sectionProperties = getSectionPropertiesWithInheritance(10, 123);
foreach ($sectionProperties as $propertyId => $data) {
    $property = $data['PROPERTY_INFO'];
    $link = $data['LINK_INFO'];
    $isInherited = $data['IS_INHERITED'];
    
    echo "{$property['NAME']} - в фильтре: {$link['SMART_FILTER']}";
    if ($isInherited) {
        echo " (унаследовано)";
    }
    echo "\n";
}
Массовое копирование привязок между разделами
Код
<?php
// Копирование настроек привязок из одного раздела в другой
function copySectionPropertyLinks($iblockId, $sourceSectionId, $targetSectionId)
{
    Loader::includeModule('iblock');
    
    $sourceLinks = \CIBlockSectionPropertyLink::GetArray($iblockId, $sourceSectionId);
    $copiedCount = 0;
    
    foreach ($sourceLinks as $propertyId => $linkSettings) {
        // Пропускаем унаследованные настройки
        if (isset($linkSettings['INHERITED']) && $linkSettings['INHERITED'] === 'Y') {
            continue;
        }
        
        // Добавляем привязку в целевой раздел
        $result = \CIBlockSectionPropertyLink::Add($iblockId, $targetSectionId, [
            'PROPERTY_ID' => $propertyId,
            'SMART_FILTER' => $linkSettings['SMART_FILTER'] ?? 'N',
            'DISPLAY_TYPE' => $linkSettings['DISPLAY_TYPE'] ?? '',
            'DISPLAY_EXPANDED' => $linkSettings['DISPLAY_EXPANDED'] ?? 'N',
            'FILTER_HINT' => $linkSettings['FILTER_HINT'] ?? '',
        ]);
        
        if ($result) {
            $copiedCount++;
        }
    }
    
    return $copiedCount;
}

// Использование:
$copied = copySectionPropertyLinks(10, 100, 200);
echo "Скопировано привязок: $copied";
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Техническая поддержка

сайтов на CMS 1C-Битрикс

от 20 000 рублей/месяц
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.

Лечение сайтов от вирусов

восстановление сайта и подъем версии PHP

от 25 000 рублей
Лечение сайтов на решениях АСПРО и прочих.

* полный комплекс лечения проекта и закрытия дыр