Блог Горошко Андрея 1C-Битрикс CUserOptions: Сохранение личных настроек интерфейса пользователя

CUserOptions: Сохранение личных настроек интерфейса пользователя

Как запомнить, что пользователь свернул этот блок?

Или что он выбрал режим отображения «Плиткой», а не «Списком»?

Для хранения таких мелких интерфейсных настроек, привязанных к пользователю, используется класс CUserOptions.

Данные хранятся в таблице b_user_option.

1. Сохранение настройки (SetOption)

$category = "my_module_interface"; // Категория настройки (чтобы не путаться)
$name = "view_mode";               // Имя настройки
$value = "tiles";                  // Значение (может быть массивом!)
$common = false;                   // false - для текущего юзера, true - для всех (если админ)

CUserOptions::SetOption($category, $name, $value, $common);

Это часто вызывается в AJAX-контроллере при клике на переключатель интерфейса.

2. Получение настройки (GetOption)

$defaultValue = "list"; // Что вернуть, если настройки нет

$viewMode = CUserOptions::GetOption(
    "my_module_interface", 
    "view_mode", 
    $defaultValue
);

if ($viewMode == 'tiles') {
    // Рисуем плитку
} else {
    // Рисуем список
}

3. Удаление настройки (DeleteOption)

CUserOptions::DeleteOption("my_module_interface", "view_mode");
// Или удалить все настройки категории для пользователя
CUserOptions::DeleteOptionsByName("my_module_interface");

Практический пример: Сворачиваемый виджет

JS (отправка):

function toggleWidget(state) {
    BX.userOptions.save('my_module', 'widget_state', 'is_closed', state ? 'Y' : 'N');
}
// BX.userOptions.save - это JS-обертка, которая сама отправит AJAX-запрос к ядру

PHP (чтение при рендере):

$isClosed = CUserOptions::GetOption('my_module', 'widget_state')['is_closed'] === 'Y';
?>
<div class="widget <?= $isClosed ? 'closed' : '' ?>">...</div>

Особенности:

  • Если передать $common = true (доступно админам), настройка применится для всех пользователей, у которых нет личной настройки с таким же именем.
  • Значение $value автоматически сериализуется, поэтому можно смело сохранять массивы.

Вывод:
CUserOptions — это стандартный способ персонализации интерфейса в Битрикс.

Используйте его для любых переключателей, состояния меню, вкладок и сортировок, чтобы сделать работу пользователей удобнее.

CUserOptions, SetOption, GetOption, настройки пользователя, интерфейс битрикс, сохранение настроек грида, персонализация.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Сквозная связка: 1С-Битрикс + 1С:УТ + Битрикс24 CRM в единую экосистемуСквозная связка: 1С-Битрикс + 1С:УТ + Битрикс24 CRM в единую экосистему

Бесшовная и отказоустойчивая интеграция сайта на 1С-Битрикс с внешними учетными системами, банками, службами доставки и маркетплейсами — основа масштабирования современного бизнеса. Услуга «Сквозная связка: 1С-Битрикс + 1С:УТ + Битрикс24 CRM

Как использовать $APPLICATION->GetDirProperty() в 1С-Битрикс: пример кодаКак использовать $APPLICATION->GetDirProperty() в 1С-Битрикс: пример кода

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Как использовать $APPLICATION->GetDirProperty() в 1С-Битрикс: пример кода». Вы узнаете экспертные методики работы с

Next Steps: Руководство разработчикаNext Steps: Руководство разработчика

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Next Steps: Руководство разработчика», проанализируем лучшие практики и