Типы данных — Каталог Медиабиблиотеки
Регистрируем обработчик события главного модуля OnIBlockPropertyBuildList
AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("CIBlockPropertyMedialibCatalog", "GetUserTypeDescription"));
Создаем класс для пользовательского типа
class CIBlockPropertyMedialibCatalog { function GetUserTypeDescription() { return array( "PROPERTY_TYPE" =>"N", "USER_TYPE" =>"MedialibCatalog", "DESCRIPTION" =>"Каталог Медиабиблиотеки", "GetPropertyFieldHtml" =>array("CIBlockPropertyMedialibCatalog", "GetPropertyFieldHtml"), "GetPublicViewHTML" =>array("CIBlockPropertyMedialibCatalog", "GetPublicViewHTML"), "ConvertToDB" =>array("CIBlockPropertyMedialibCatalog", "ConvertToDB"), "GetAdminListViewHTML" =>array("CIBlockPropertyMedialibCatalog","GetAdminListViewHTML"), ); } function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) { CModule::IncludeModule("fileman"); CMedialib::Init(); $arCollections = CMedialibCollection::GetList(array('arOrder'=>Array('NAME'=>'ASC'),'arFilter' => array('ACTIVE' => 'Y'))); echo "<select name=\"".$strHTMLControlName["VALUE"]."\">"; foreach($arCollections as $code=>$vl) { if ($vl["ID"]==$value["VALUE"]) echo "<option selected value=\"".$vl["ID"]."\">".$vl["NAME"]."</option>"; else echo "<option value=\"".$vl["ID"]."\">".$vl["NAME"]."</option>"; } echo "</select>"; } function GetAdminListViewHTML($arProperty, $value, $strHTMLControlName) { if(strlen($value["VALUE"])>0) return str_replace(" ", " ", htmlspecialcharsex($value["VALUE"])); else return ' '; } function GetPublicViewHTML($arProperty, $value, $strHTMLControlName) { if(strlen($value["VALUE"])>0) return str_replace(" ", " ", htmlspecialcharsex($value["VALUE"])); else return ''; } function ConvertToDB($arProperty, $value) { if(strlen($value["VALUE"])>0) { $value["VALUE"] = intval($value["VALUE"]); } return $value; } }