Иногда бывает нужно настроить форму редактирования инфоблока через PHP (например, это удобно использовать в мастере создания сайта или для ускоренного создания типовых инфоблоков).
Настройки формы редактирования инфоблока хранятся в таблице b_user_option в виде сериализованного массива:
Чтобы создать такие настройки - можно использовать следующий код:
Используем многомерный массив, где каждый блок - это вкладка с её свойствами. Вкладки и свойства выводятся в точно таком-же порядке, в котором задаются в массиве.
Первый параметр - символьный код свойства, второй - его название.
Если параметр со звездочкой - он в форме редактирования он подсвечивается жирным и становится обязательным для заполнения.
Если нужно вывести определенное свойство - нужно использовать префикс PROPERTY и айдишник свойства, например, так: "PROPERTY_5".
В версии 12.5 добавили новое ползеное свойство - IBLOCK_ELEMENT_PROPERTY, если его использовать - то на его место будут подставляться все свойства, которые не выведены явно, это довольно удобно (но он работает только на редакциях с Интернетг-магазином).
Если нужно применить настройки не для всех пользователей, а конкретно для какого-то - меняем параметры $bCommon и $userId.
Настройки формы редактирования инфоблока хранятся в таблице b_user_option в виде сериализованного массива:
a:1:{s:4:"tabs";s:822:"edit1--#--Товар--,--ACTIVE--#--Активность--,--NAME--#--*Название--,--CODE--#--*Символьный код--,--DETAIL_PICTURE--#--Изображение--,--CATALOG--#--*Торговый каталог--;--edit6--#--Подробно--,--IBLOCK_ELEMENT_PROPERTY--#--Значения свойств--,--IBLOCK_ELEMENT_PROP_VALUE--#----Особые отличия--,--PROPERTY_35--#--Спецпредложение--,--PROPERTY_36--#--Новинка--,--PROPERTY_37--#--Лидер продаж--,--DETAIL_TEXT--#--Детальное описание--,--PROPERTY_39--#--Рекомендуемые товары--,--PROPERTY_38--#--Дополнительные фотографии--;--edit2--#--Категория--,--SECTIONS--#--*Разделы--;--edit8--#--Торговые предложения--,--OFFERS--#--Торговые предложения--;--edit3--#--Дополнительно--,--ACTIVE_FROM--#--Начало активности--,--ACTIVE_TO--#--Окончание активности--,--SORT--#--Сортировка--,--TAGS--#--Теги--,--PREVIEW_TEXT--#--Описание для анонса--;--";} |
Чтобы создать такие настройки - можно использовать следующий код:
//==========================// // Настраиваем форму // // редактирования инфоблока // //==========================// $IBLOCK_ID = 45; // Номер инфоблока // Вкладки и свойства $arFormSettings = array( array( array("edit1", "Товар"), // Название вкладки array("ACTIVE", "Активность"), array("NAME", "*Название"), // Свойство со звездочкой - помечается как обязательное array("CODE", "*Символьный код"), array("DETAIL_PICTURE", "Изображение"), array("CATALOG", "*Торговый каталог"), ), array( array("edit2", "Подробно"), array("IBLOCK_ELEMENT_PROPERTY", "Значения свойств"), // Свойства, которые не выводятся явно array("IBLOCK_ELEMENT_PROP_VALUE", "--Особые отличия"), // Для заголовков блоков вначале нужно писать две черточки (--) array("PROPERTY_5", "Специальное предолжение"), // Свойство, которое выводится явно array("PROPERTY_6", "Новинка"), // Вывод определенного свойства array("DETAIL_TEXT", "Детальное описание"), ), array( array("edit3", "Категория"), array("SECTIONS", "*Разделы"), ), array( array("edit4", "Торговые предложения"), array("OFFERS", "Торговые предложения"), // Используется в модуле торгового каталога (Интернет-магазин) ), array( array("edit5", "Дополнительно"), array("ACTIVE_FROM", "Начало активности"), array("ACTIVE_TO", "Окончание активности"), array("SORT", "Сортировка"), array("TAGS", "Теги"), array("PREVIEW_TEXT", "Описание для анонса"), ), ); // Сериализация $arFormFields = array(); foreach ($arFormSettings as $key => $arFormFields) { $arFormItems = array(); foreach ($arFormFields as $strFormItem) $arFormItems[] = implode('--#--', $strFormItem); $arStrFields[] = implode('--,--', $arFormItems); } $arSettings = array("tabs" => implode('--;--', $arStrFields)); // Применяем настройки для всех пользователей для данного инфоблока $rez = CUserOptions::SetOption("form", "form_element_".$IBLOCK_ID, $arSettings, $bCommon=true, $userId=false); if ($rez) echo "- Страница редактирования товара успешно настроена<br />"; else echo "- Ошибка настройки страницы редактирования товара<br />"; |
Используем многомерный массив, где каждый блок - это вкладка с её свойствами. Вкладки и свойства выводятся в точно таком-же порядке, в котором задаются в массиве.
Первый параметр - символьный код свойства, второй - его название.
Если параметр со звездочкой - он в форме редактирования он подсвечивается жирным и становится обязательным для заполнения.
Если нужно вывести определенное свойство - нужно использовать префикс PROPERTY и айдишник свойства, например, так: "PROPERTY_5".
В версии 12.5 добавили новое ползеное свойство - IBLOCK_ELEMENT_PROPERTY, если его использовать - то на его место будут подставляться все свойства, которые не выведены явно, это довольно удобно (но он работает только на редакциях с Интернетг-магазином).
Если нужно применить настройки не для всех пользователей, а конкретно для какого-то - меняем параметры $bCommon и $userId.