Приветствую, разработчиков!
Часто встречаются задачи по настройки пользовательского интерфейса в административной части. И если вручную это сделать достаточно просто, то программно это сделать сложнее (на первый взгляд). За работу с пользовательскими настройками отвечает класс CUserOptions, он к сожалению пока . В связи с этим все желающие могут изучить его работу по . Скажу честно, я пока не разобрал этот класс досконально. Стояла задача: отображать различные вкладки для разных групп пользователей (формы редактирования элементов инфоблока).
Решение:
function addOrRemoveTabForUsers()
{
// для какой группы пользователей и какой страницы
if(CSite::InGroup (array(код_группы)) and $GLOBALS["APPLICATION"]->GetCurPage() == "/bitrix/admin/iblock_element_edit.php")
{
// получаем текущие настройки
$userOption = CUserOptions::GetOption("form", "form_element_".(int)$_REQUEST["IBLOCK_ID"]);
$tabsSettings = $userOption["tabs"];
// получаем строку со всей информации по вкладкам, разбиваем ее на массив
$tabsSetting = explode(";", $tabsSettings);
foreach($tabsSetting as $key => $tab)
{
// скроем вкладку SEO для определенной группы пользователей
$seoKey = strpos($tab, "--SEO--");
if($seoKey !== false)
{
unset($tabsSetting[$key]);
break;
}
}
// снова сливаем массив в строку (для записи)
$tabsSettings = implode(";", $tabsSetting);
// записываем текущие настройки
if($userOption["tabs"] != $tabsSettings) CUserOptions::SetOption("form", "form_element_".(int)$_REQUEST["IBLOCK_ID"], array('tabs' => $tabsSettings));
}
}
На этом заканчиваю небольшую экскурсию. Надеюсь, появится документация от саппорта Битрикс. Рад буду обратной связи!
Часто встречаются задачи по настройки пользовательского интерфейса в административной части. И если вручную это сделать достаточно просто, то программно это сделать сложнее (на первый взгляд). За работу с пользовательскими настройками отвечает класс CUserOptions, он к сожалению пока . В связи с этим все желающие могут изучить его работу по . Скажу честно, я пока не разобрал этот класс досконально. Стояла задача: отображать различные вкладки для разных групп пользователей (формы редактирования элементов инфоблока).
Решение:
function addOrRemoveTabForUsers()
{
// для какой группы пользователей и какой страницы
if(CSite::InGroup (array(код_группы)) and $GLOBALS["APPLICATION"]->GetCurPage() == "/bitrix/admin/iblock_element_edit.php")
{
// получаем текущие настройки
$userOption = CUserOptions::GetOption("form", "form_element_".(int)$_REQUEST["IBLOCK_ID"]);
$tabsSettings = $userOption["tabs"];
// получаем строку со всей информации по вкладкам, разбиваем ее на массив
$tabsSetting = explode(";", $tabsSettings);
foreach($tabsSetting as $key => $tab)
{
// скроем вкладку SEO для определенной группы пользователей
$seoKey = strpos($tab, "--SEO--");
if($seoKey !== false)
{
unset($tabsSetting[$key]);
break;
}
}
// снова сливаем массив в строку (для записи)
$tabsSettings = implode(";", $tabsSetting);
// записываем текущие настройки
if($userOption["tabs"] != $tabsSettings) CUserOptions::SetOption("form", "form_element_".(int)$_REQUEST["IBLOCK_ID"], array('tabs' => $tabsSettings));
}
}
На этом заканчиваю небольшую экскурсию. Надеюсь, появится документация от саппорта Битрикс. Рад буду обратной связи!