Иногда бывает нужно настроить форму редактирования инфоблока через 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.