Документация для разработчиков
Темная тема

Add

Описание и параметры

int CIBlockProperty::Add(
	array arFields
);

Метод добавляет новое свойство. Отменить добавление или изменить поля свойства можно в обработчике события OnBeforeIBlockPropertyAdd. После добавления нового свойства вызываются обработчики события OnAfterIBlockPropertyAdd. Нестатический метод.

Параметры вызова

ПараметрОписание
arFields Массив Array("поле"=>"значение", ...).
Содержит значения всех полей свойства. Кроме того, с помощью поля "VALUES", значением которого должен быть массив структуры
array(
	array(
		"VALUE"=>"значение",
		"DEF"=>"по умолчанию (Y/N)",
		"SORT"=>"индекс сортировки"
		...
	),
)
, можно установить варианты выбора для свойств типа "список" (подробнее смотрите метод CIBlockProperty::UpdateEnum()).

Возвращаемое значение

Метод возвращает ID добавленного свойства, если добавление прошло успешно, при возникновении ошибки метод вернет false, а в свойстве объекта LAST_ERROR будет содержаться текст ошибки.

Примеры использования

<?
$arFields = Array(
	"NAME" => "Цвет",
	"ACTIVE" => "Y",
	"SORT" => "100",
	"CODE" => "color",
	"PROPERTY_TYPE" => "L",
	"IBLOCK_ID" => 11
);
$arFields["VALUES"][0] = Array(
	"VALUE" => "Красный",
	"DEF" => "N",
	"SORT" => "100"
);
$arFields["VALUES"][1] = Array(
	"VALUE" => "Желтый",
	"DEF" => "N",
	"SORT" => "200"
);
$arFields["VALUES"][2] = Array(
	"VALUE" => "Зеленый",
	"DEF" => "Y",
	"SORT" => "300"
);
$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);
?>
//добавление свойства типа "HTML"
$arFields = Array(
	"NAME" => "Итог",
	"ACTIVE" => "Y",
	"SORT" => "600",
	"CODE" => "ITOG",
	"PROPERTY_TYPE" => "S",
	"USER_TYPE" => "HTML", 
	"IBLOCK_ID" => $arParams["IBLOCK_ID"],
);
      
$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);


//для добавления свойства типа "Видео" в массиве arFields должно быть указано:
"PROPERTY_TYPE" => "S",
"USER_TYPE" => "video",
//установка параметра "Выводить поле для описания значения" для свойства инфоблока ("WITH_DESCRIPTION" => "Y")
// доступно только для типов свойств:  S - строка, N - число и F - файл
$arFields = Array(
	"NAME" => "Прочее",
	"ACTIVE" => "Y",
	"SORT" => "1700",
	"CODE" => "F_OTHER",
	"PROPERTY_TYPE" => "S",
	"IBLOCK_ID" => $IBLOCK_ID,
	"WITH_DESCRIPTION" => "Y",
);

$iblockproperty = new CIBlockProperty;
$PropertyID = $iblockproperty->Add($arFields);
//добавление к инфоблоку свойства типа "Справочник"
$arFields = Array(
	"NAME" => "Производитель",
	"ACTIVE" => "Y",
	"SORT" => "50",
	"CODE" => "PROIZVODITEL",
	"PROPERTY_TYPE" => "S",
	"USER_TYPE" => "directory",
	"IBLOCK_ID" => 888888888888888,//номер вашего инфоблока
	"LIST_TYPE" => "L",
	"MULTIPLE" => "N",
	"USER_TYPE_SETTINGS" => array("size"=>"1", "width"=>"0", "group"=>"N", "multiple"=>"N", "TABLE_NAME"=>"b_producers")
);

$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);


//затем следует в значение свойства вставить значение поля  UF_XML_ID от вашего справочника
CIBlockElement::SetPropertyValuesEx(123188, 888888888888888, array('PROIZVODITEL'=>'000000701'));


Пользовательские комментарии

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

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Александр Ризель
Сообщение не промодерировано, возможны ошибки и неточности.
Чтобы добавить файл нужно передать в VALUE не путь, а массив файла.
Код
$path = '/temp/test.html';

\CIBlockElement::SetPropertyValuesEx(
    $id,
    $iblockId,
    [
        'TEMPLATE_F' => [
            [
                'VALUE' => \CFile::MakeFileArray($path),
                'DESCRIPTION' => ''
            ]
        ]
    ]
);

Если нужно файл создать :
Код
// тут получаем системную папку для временных файлов и указываем название файла
$path = \sys_get_temp_dir().'/prop.html';

// наполняем любым контентом, ну или пустой строкой (чтобы создать файл)
\file_put_contents($path, '');

Такие файлы сами не удаляются, так что предусмотрите его удаление заранее.
0
Вячеслав Докукин
Сообщение не промодерировано, возможны ошибки и неточности.
Тип файл
Код
    /**
     * Add property file iblock
     */
    private function addPropertyFileIblock(string $propName, string $propCode, bool $multiple = false)
    {
        $res = \CIBlock::GetProperties($this->IBLOCK_ID, Array(), Array('CODE' => $propCode));

        if($prop = $res->Fetch())
        {

            return $prop['ID'];

        }else{
            $arFields = Array(
                "NAME" => $propName,
                "ACTIVE" => "Y",
                "SORT" => "100",
                "CODE" => $propCode,
                "PROPERTY_TYPE" => "F",
                "LIST_TYPE" => "L",
                "MULTIPLE" => ($multiple)? 'Y' : 'N',
                //"PROPERTY_XML_ID" => null,
                "IBLOCK_ID" => $this->IBLOCK_ID
            );
            $ibp = new \CIBlockProperty;

            if($id = $ibp->Add($arFields))
            {
                return $id;
            }
        }

        return false;
    }
5
Алексей Попович
Для включения галочки о показе свойства в карточке товара, в список параметров нужно передать массив по ключу "Features"

В общем, массив параметра выглядит так:
Код
$arFields = [   'NAME'          => $arProperty['NAME'],
   'ACTIVE'        => 'Y',
   'SORT'          => 500,
   'CODE'          => $code,
   'PROPERTY_TYPE' => 'S',
   'IBLOCK_ID'     => $this->IBLOCK_ID,
   'XML_ID'        => $arProperty['XML_ID'],
   'FEATURES'    => [
      [
         'IS_ENABLED'=>'Y',
         'MODULE_ID'=>'iblock',
         'FEATURE_ID'=>'DETAIL_PAGE_SHOW'
      ]

   ]
];
0
Ilya Chumakov
LIST_TYPE в массиве полей отвечает за внешний вид свойства типа список. Если значение = L, то это просто список. Если C - флажки
5
ivan trufanov
Для привязки свойства к элементам инфоблока нужно указать PROPERTY_TYPE => E и LINK_IBLOCK_ID => <нужный iblock>
Код
 $arFields = Array(
   "NAME" => "Внешний ID элемента",
   "ACTIVE" => "Y",
   "SORT" => "600",
   "CODE" => "ExtElementID",
   "PROPERTY_TYPE" => "E",
   "IBLOCK_ID" => 2,
   "LINK_IBLOCK_ID" => 1
);
      
$ibp = new CIBlockProperty;
$PropID = $ibp->Add($arFields);
9
Адель Юсупов
//Для прикрепления свойства к разделу необходимо использовать класс

$SECTION_ID = 1; //- идентификатор раздела, либо 0, если требуется отвязать свойство от инфоблока.
$PROPERTY_ID = 2; // - идентификатор свойства.
$arLink = array('SMART_FILTER' => 'N'); //- в данный момент может содержать 2 ключа, это IBLOCK_ID и SMART_FILTER.
//В свою очередь $arLink = array(‘SMART_FILTER’ => ‘Y’) - включить свойство в умный фильтр, если свойство в умный фильтр включать не требуется, можно просто //не указывать SMART_FILTER, либо $arLink = array(‘SMART_FILTER’ => ‘N’).

CIBlockSectionPropertyLink::Add($SECTION_ID, $PROPERTY_ID, $arLink = array());
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх