Битрикс – как массово добавить свойства в инфоблок

Как добавить свойства в инфоблок.
В 1С битрикс есть такая прекрасная штука как Информационные блоки, или коротко – инфоблоки. У них, в свою очередь, есть свойства, которые мы и будем массово добавлять.

Массив с данными будет иметь следующий вид:

Array
(
    [1] => date
    [2] => update-date
    [3] => id
    [4] => url
    [5] => mark
    [6] => model
    [7] => year
    [8] => seller-city
    [9] => seller-phone
    [10] => seller
    [11] => price
    [12] => old_price
    [13] => currency-type
    [14] => run-metric
    [15] => run
    [16] => additional-info
    [17] => state
    [18] => color
    [19] => body-type
    [20] => doors-count
    [21] => engine-type
    [22] => gear-type
    [23] => displacement
    [24] => transmission
    [25] => horse-power
    [26] => steering-wheel
    [27] => vin
    [28] => stock
    [29] => haggle
    [30] => custom-house-state
    [31] => equipment
    [32] => image
    [33] => video
)

После этого нам нужно всё загрузить в базу:

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>

<?
CModule::IncludeModule("iblock");

foreach($arrr as $p => $k) {
	$code = str_replace('-', '_', $k);
	$code = strtoupper($code);
	$arFields = Array(
		"NAME" => "$k",
		"ACTIVE" => "Y",
		"SORT" => "$p",
		"CODE" => "$code",
		"PROPERTY_TYPE" => "S",
		"IBLOCK_ID" => 23
	);
	$ibp = new CIBlockProperty;
	$PropID = $ibp->Add($arFields);
}

На что стоит обратить внимание:
1. Знак тире “-” является недопустимым в языке PHP если вы указываете переменные. С символьными кодами такая же история.
2. Все символьные коды должны быть записаны в верхнем регистре (вы конечно можете их писать в нижнем, но это плохой тон для битрикса).

Немного типов свойств в самом битриксе, которые вам могут пригодится (PROPERTY_TYPE) :

S — Строка
N — Число
L — Список
F — Файл
G — Привязка к разделам
E — Привязка к элементам
S:map_yandex — Привязка к Яндекс.Карте
S:video — Видео
S:map_google — Привязка к карте Google Maps
N:CatalogIblock — Привязка к торговому каталогу
S:UserID — Привязка к пользователю
S:TopicID — Привязка к теме форума
E:EList — Привязка к элементам в виде списка
S:FileMan — Привязка к файлу (на сервере)
E:SKU — Привязка к товарам (SKU)
S:HTML — HTML/текст
N:Sequence — Счетчик
S:DateTime — Дата/Время
E:EAutocomplete — Привязка к элементам с автозаполнением
S:ElementXmlID — Привязка к элементам по XML_ID

И напоследок еще пример добавления свойства:

$arFields[0] = Array(
    "NAME" => 'название',
    "ACTIVE" => "Y",
    "SORT" => "500",
    "CODE" => "CODE",
    "PROPERTY_TYPE" => "N", // тип
    "IBLOCK_ID" => $IBLOCK_ID
);
 
$ibp = new CIBlockProperty;
 
if($PropID = $ibp->Add($arFields[0]))
    echo 'OK: '.$PropID . '<br/>';
else
    echo 'Error: '.$ibp->LAST_ERROR . '<br/>';

Вот и всё, надеюсь статья была для вас полезна :).

Если на вашем сайте необходимо выполнить работу по выводу свойств, или парсинг из базы, обращайтесь ко мне, помогу :)

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *