Блог Николая Семенцова

Партнер компании 1с-битрикс

Создание пользовательских свойств для разделов каталога

Стояла задача сделать вывод ключевых слов и описания в метатеги в разделах каталога, инфоблоков у меня было 11 штук, естественно везде создавать вручную не было ни какого желания.

Для того что бы создать свойства я использовал код в системе администрирования в "Командная PHP-строка"

  CModule::IncludeModule("iblock");
    // получим все инфоблоки в каталоге
   $resB = CIBlock::GetList(
    Array(),
    Array(
            'TYPE'=>'catalog'
        ), false
    );
    while($ar_res_blo = $resB->Fetch())
    {
        $iblon[] = $ar_res_blo['ID'];
    }
 
 // запустим цикл для создания свойств
 foreach ($iblon as $iblon_id) {
$oUserTypeEntity    = new CUserTypeEntity();  
// составим массив для создания свойства
$aUserFields    = array(
    'ENTITY_ID'         => 'IBLOCK_'.$iblon_id.'_SECTION',
    'FIELD_NAME'        => 'UF_KEYWORDS',
    'USER_TYPE_ID'      => 'string',
    'XML_ID'            => 'UF_KEYWORDS',
    'SORT'              => 500,
    'MULTIPLE'          => 'N',
    'MANDATORY'         => 'N',
    'SHOW_FILTER'       => 'N',
    'SHOW_IN_LIST'      => '',
    'EDIT_IN_LIST'      => '',
    'IS_SEARCHABLE'     => 'N',
    'SETTINGS'          => array(
        'DEFAULT_VALUE' => '',
        'SIZE'          => '20',
        'ROWS'          => '1',
        'MIN_LENGTH'    => '0',
        'MAX_LENGTH'    => '0',
        'REGEXP'        => '',
),
    'EDIT_FORM_LABEL'   => array(
        'ru'    => 'Ключевые слова',
        'en'    => 'Keywords',
    ),
    'LIST_COLUMN_LABEL' => array(
        'ru'    => 'Ключевые слова',
        'en'    => 'Keywords',
    ),
/* Подпись фильтра в списке */
    'LIST_FILTER_LABEL' => array(
        'ru'    => 'Ключевые слова',
        'en'    => 'Keywords',
),
/* Помощь */
    'HELP_MESSAGE'      => array(
        'ru'    => '',
        'en'    => '',
    ),
);
 
$iUserFieldId   = $oUserTypeEntity->Add( $aUserFields ); // int  
 
}

Этот код для создания свойства для ключевого слова а для описания соответственно

  CModule::IncludeModule("iblock");
    // получим все инфоблоки в каталоге
   $resB = CIBlock::GetList(
    Array(),
    Array(
            'TYPE'=>'catalog'
        ), false
    );
    while($ar_res_blo = $resB->Fetch())
    {
        $iblon[] = $ar_res_blo['ID'];
    }
 
 // запустим цикл для создания свойств
 foreach ($iblon as $iblon_id) {
$oUserTypeEntity    = new CUserTypeEntity();  
$aUserFields    = array(
    'ENTITY_ID'         => 'IBLOCK_'.$iblon_id.'_SECTION',
    'FIELD_NAME'        => 'UF_DESCRIPTION',
    'USER_TYPE_ID'      => 'string',
    'XML_ID'            => 'UF_DESCRIPTION',
    'SORT'              => 500,
    'MULTIPLE'          => 'N',
    'MANDATORY'         => 'N',
    'SHOW_FILTER'       => 'N',
    'SHOW_IN_LIST'      => '',
    'EDIT_IN_LIST'      => '',
    'IS_SEARCHABLE'     => 'N',
    'SETTINGS'          => array(
        'DEFAULT_VALUE' => '',
        'SIZE'          => '20',
        'ROWS'          => '1',
        'MIN_LENGTH'    => '0',
        'MAX_LENGTH'    => '0',
        'REGEXP'        => '',
),
    'EDIT_FORM_LABEL'   => array(
        'ru'    => 'Описание',
        'en'    => 'description',
    ),
    'LIST_COLUMN_LABEL' => array(
        'ru'    => 'Описание',
        'en'    => 'description',
    ),
/* Подпись фильтра в списке */
    'LIST_FILTER_LABEL' => array(
        'ru'    => 'Описание',
        'en'    => 'description',
),
/* Помощь */
    'HELP_MESSAGE'      => array(
        'ru'    => '',
        'en'    => '',
    ),
);
 
$iUserFieldId   = $oUserTypeEntity->Add( $aUserFields ); // int  
 
}

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


Опубликовано: 17 октября 2012




Помогла заметка? Жмите кнопки ниже


ВКонтакт Facebook Google Plus Одноклассники Twitter Livejournal Liveinternet Mail.Ru





comments powered by Disqus