Как запомнить, что пользователь свернул этот блок?
Или что он выбрал режим отображения «Плиткой», а не «Списком»?
Для хранения таких мелких интерфейсных настроек, привязанных к пользователю, используется класс 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, настройки пользователя, интерфейс битрикс, сохранение настроек грида, персонализация.