Основы работы с инфоблоками Битрикса

Иногда трудно сразу найти что то  в документации Битрикса. Поэтому в этом посте решил описать основные методы работы с инфоблоками, которые наиболее часто использовал.

У элемента есть свойство типа список. Получение значений свойств элемента инфоблока:

 <?
    // $idblock - id блока, $code - Код свойства
	CModule::IncludeModule('iblock');
    $db_props = CIBlockElement::GetProperty($idblock, "", array("sort" => "asc"), array("CODE" => $code));
	// если code =M% тогда выберет всё, что начинается на M 
    while($ar_props = $db_props->Fetch())
	{
		$property_enums = CIBlockPropertyEnum::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$idblock, "PROPERTY_ID" => $ar_props["ID"]));
		while($enum_fields = $property_enums->GetNext())
		{
				   	$arResult["SERIYA"][] = array(
					"ID" => $enum_fields["ID"],  // id свойства
					"NAME" =>$enum_fields["VALUE"] // значение
				   );
		}
	}
	return $arResult; 
?>

Получение значений полей всех элементов инфоблока

 <?
if(CModule::IncludeModule('iblock'))  //обязательное условие для работы указанных методов
	{ 
		$arSelect = Array("ID","property_CODE","NAME","DETAIL_TEXT"); 
		/// выборка значений полей.  CODE - код дополнительного свойства(если есть) , DETAIL_TEXT - детальное описание элемента 
		
		$arFilter = Array("IBLOCK_ID"=>$idblock, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
		$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
		while($ob = $res->GetNextElement()) // "бежим" по элементам
		{
		  $arFields[] = $ob->GetFields();  // $arFields массив значений полей текущего элемента
		  
		}
		
	}
?>

Получение значений поля элемента инфоблока по его id

 <? 
		$arSelect = Array("ID","DETAIL_TEXT","NAME"); // выборка нужных значений
		$arFilter = Array("IBLOCK_ID"=>$idBlock, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y","ID"=>$idElement);
		$res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect);
		$ob = $res->GetNextElement();
		$arFields = $ob->GetFields();
		print_r($arFields);
?>

Добавление либо обновление инфоблока:

Для того что бы добавить либо обновить инфоблок нужно вначале создать и заполнить массив значений $arFields

 <? 
$arFields = Array(
  "ACTIVE" => $ACTIVE,
  "NAME" => $NAME,
  "CODE" => $CODE,
  "LIST_PAGE_URL" => $LIST_PAGE_URL,
  "DETAIL_PAGE_URL" => $DETAIL_PAGE_URL,
  "IBLOCK_TYPE_ID" => $type,
  "SITE_ID" => Array("en", "de"),
  "SORT" => $SORT,
  "PICTURE" => $arPICTURE,
  "DESCRIPTION" => $DESCRIPTION,
  "DESCRIPTION_TYPE" => $DESCRIPTION_TYPE,
  "GROUP_ID" => Array("2"=>"D", "3"=>"R")
  );
?>
Для добавления инфоблока
 <? 
 $ib = new CIBlock; 
 $ID = $ib->Add($arFields); 
?>
Для обновления инфоблока
 <? 
 $ib = new CIBlock; 
 $res = $ib->Update($ID, $arFields);
?>

Добавление пользовательского свойства типа список

Создаем массив с параметрами свойства:

 <?
$arFields = Array(
  "NAME" => "Цвет",
  "ACTIVE" => "Y",
  "SORT" => "100",
  "CODE" => "COLOR",
  "PROPERTY_TYPE" => "L", // тип свойства
  "IBLOCK_ID" => 17  // id блока
  );
?>

Заполняем массив значениями:

 <?
$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"
);
?>
Вызываем функцию добавления свойства:
 <?
	if(CModule::IncludeModule('iblock'))  
	{ 
		
		$ibp = new CIBlockProperty;
		$PropID = $ibp->Add($arFields);
	}
?>

Оставлен slotti (не проверено) 10 Июль, 2012 - 00:10

Спасибо, столько ценной информации, да еще и в одном месте)

Оставлен Гость (не проверено) 26 Октябрь, 2012 - 12:14

Бесполезно. Это все есть в документации.

Оставлен Владимир Скрипкин (не проверено) 10 Декабрь, 2012 - 12:38

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

Добавить комментарий

comment

  • Доступные HTML теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
2011 © zapiski.pro