Модуль информационных блоков в системе Bitrix является универсальным инструментом, который позволяет реализовать множество задач, используя API. Особенностью информационных блоков является возможность добавления свойств, различных типов. Тип свойства (PROPERTY_TYPE) при работе с API определят его способ хранения и представления.
На данный момент, информационные блоки могут иметь свойства следующих типов:
S — строка
N — число
L — список
F — файл
G — привязка к разделу
E — привязка к элементу
S:UserID — Привязка к пользователю
S:DateTime — Дата/Время
E:EList — Привязка к элементам в виде списка
S:FileMan — Привязка к файлу (на сервере)
S:map_yandex — Привязка к Яndex.Карте
S:HTML — HTML/текст
S:map_google — Привязка к карте Google Maps
S:ElementXmlID — Привязка к элементам по XML_ID
Каждый из типов свойств, при работе с ними, предполагает определенные правила хранения, присущие конкретному свойству. Для каждого свойства имеется множество параметров, такие как активность, код, множественность, и т.п., которое определяет свойство в целом. В Bitrix существуют классы с наборами методов для работы со свойствами и их значениями. Ниже есть ссылки на документацию по работе с этими методами.
Рассмотрим простой пример.
Задача: Выбрать все активные свойства типа S (строка), указанного инфоблока.
// подключаем API
require_once($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/include/prolog_before.php");
// подключаем модуль инфо-блоков
if (CModule::IncludeModule('iblock')){
// параметры фильтра
$arFilter = Array(
"ACTIVE" => "Y", // активность
"IBLOCK_ID" => 4, // инфоблок, с id == 4
"PROPERTY_TYPE" => "S" // только с типом S (строка)
);
// обращаемся к методу GetList
$PrObj = CIBlockProperty::GetList(Array("sort"=>"asc"), $arFilter);
while ($arProp = $PrObj->GetNext()){
echo '<p> Свойство: '.$arProp['NAME'].', ID: '.$arProp['ID'].'</p>';
}
}
Результат получаем такого вида:
<p>Свойство: Цвет, ID: 34</p> <p>Свойство: Модель, ID: 38</p> …
Данный пример достаточно примитивен. На практике использование API Bitrix как правило происходит разносторонне, исходя из ваших задач и потребностей. В связи с этим, для более рационального использования рекомендую работать с документацией:
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockproperty/index.php
http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockpropertyenum/index.php