Настройки показа свойств в списках, на детальной странице

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

Июль 11, 2024

Теги: Инфоблоки, Перенос данных

Работа с настройками свойств для вывода в списке, на детальной странице товара. Класс "\Bitrix\Iblock\Model\PropertyFeature".

Вывод значений галочек "Показывать на странице списка элементов", "Показывать на детальной странице элемента" инфоблока с ID=16, например, для сохранения в php файл для последующего переноса на другой сайт (сохраняются символьные коды свойств):


\Bitrix\Main\Loader::includeModule('iblock');

$iblockId 16;
$listShowPropertyId \Bitrix\Iblock\Model\PropertyFeature::getListPageShowPropertyCodes($iblockId);
$detailShowPropertyId \Bitrix\Iblock\Model\PropertyFeature::getDetailPageShowPropertyCodes($iblockId);
$rsProperty \Bitrix\Iblock\PropertyTable::getList(array(
    
'filter' => array(
        
'IBLOCK_ID' => $iblockId,
        
'=ID' => $listShowPropertyId,
    ),
    
'select' => array(
        
'ID','CODE',
    ),
));
$listShowPropertyCode = [];
while(
$property=$rsProperty->fetch())
{
    
$listShowPropertyCode[] = $property['CODE'];
}
$rsProperty \Bitrix\Iblock\PropertyTable::getList(array(
    
'filter' => array(
        
'IBLOCK_ID' => $iblockId,
        
'=ID' => $detailShowPropertyId,
    ),
    
'select' => array(
        
'ID','CODE',
    ),
));
$detailShowPropertyCode = [];
while(
$property=$rsProperty->fetch())
{
    
$detailShowPropertyCode[] = $property['CODE']?;
}
var_dump($listShowPropertyCode);
var_dump($detailShowPropertyCode);

Восстановление галочек в инфоблоке ID=10 на основе данных из предыдущего скрипта (также источником могут служить соответствующие параметры компонентов "bitrix:news", "bitrix:catalog"):


$countListShowPropertyCodeSet 0;

$countDetailShowPropertyCodeSet 0;
\Bitrix\Main\Loader::includeModule('iblock');
$iblockId 10;
$rsProperty \Bitrix\Iblock\PropertyTable::getList(array(
    
'filter' => array(
        
'IBLOCK_ID' => $iblockId,
    ),
    
'select' => array(
        
'ID','CODE','NAME',
    ),
));
while(
$property=$rsProperty->fetch())
{
    
var_dump($property);
    
$propertyFeatureSet = [];
    if(
in_array($property['CODE'],$listShowPropertyCode))
    {
        echo 
"Да, найдено для для списка\n";
        
$countListShowPropertyCodeSet++;
        
$propertyFeatureSet[] = [
            
"MODULE_ID"=>"iblock",
            
"IS_ENABLED"=>"Y",
            
"FEATURE_ID" => "LIST_PAGE_SHOW"
        
];
    }
    else
    {
        echo 
"Нет, не найдено для списка, сбрасываем\n";
    }
    if(
in_array($property['CODE'],$detailShowPropertyCode))
    {
        echo 
"Да, найдено для детальной\n";
        
$countDetailShowPropertyCodeSet++;
        
$propertyFeatureSet[] = [
            
"MODULE_ID"=>"iblock",
            
"IS_ENABLED"=>"Y",
            
"FEATURE_ID" => "DETAIL_PAGE_SHOW"
        
];
    }
    else
    {
        echo 
"Нет, не найдено для детальной, сбрасываем\n";
    }
    
\Bitrix\Iblock\Model\PropertyFeature::setFeatures($property['ID'],$propertyFeatureSet);
}
var_dump($countListShowPropertyCodeSet,$countDetailShowPropertyCodeSet);
Интеграция с iiko и rkeeper, готовый сайт ресторана

См. также:

← Переход к списку