Блог Горошко Андрея 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, настройки пользователя, интерфейс битрикс, сохранение настроек грида, персонализация.

Мой рейтинг:

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

Related Post

E-commerce в D7: Управление корзиной (Bitrix\Sale\Basket)E-commerce в D7: Управление корзиной (Bitrix\Sale\Basket)

Средний рейтинг Еще нет оценок  Работа с корзиной — основа любого интернет-магазина. Старые методы CSaleBasket ушли в прошлое. В D7 используется мощная объектная модель Bitrix\Sale\Basket, которая автоматически учитывает скидки, правила работы с корзиной

Работа с JSON в D7: Класс Bitrix\Main\Web\Json и его преимуществаРабота с JSON в D7: Класс Bitrix\Main\Web\Json и его преимущества

Средний рейтинг Еще нет оценок PHP имеет встроенные функции для работы с JSON, но в Битрикс D7 есть свой класс-обертка \Bitrix\Main\Web\Json, который рекомендуется использовать в рамках фреймворка. Преимущества Bitrix\Main\Web\Json Примеры использования Кодирование

Многосайтовость в Битрикс: Как разделить контент и шаблоныМногосайтовость в Битрикс: Как разделить контент и шаблоны

Средний рейтинг Еще нет оценок Многосайтовость — одна из ключевых «фишек» Битрикс. Она позволяет управлять неограниченным количеством сайтов (с разными доменами, шаблонами и контентом) из одной административной панели на базе