Работа с конфигом: чтение и запись опций
Чтение и запись настроек через COption или \Bitrix\Main\Config\Option с примерами использования в модулях и компонентах.
Как использовать
- Скопируйте нужный фрагмент кода.
- Вставьте в свой проект и при необходимости измените под задачу.
- Проверьте зависимости и окружение (версии, переменные).
Работа с настройками модулей через API конфигурации Bitrix. Используйте для хранения пользовательских настроек модулей, компонентов, параметров интеграций.
use Bitrix\Main\Loader;
use Bitrix\Main\Config\Option;
/**
* Чтение опции через D7 API
* @param string $moduleId ID модуля (например, 'main', 'iblock', 'sale')
* @param string $name Имя опции
* @param string $default Значение по умолчанию
* @return string Значение опции
*/
function getConfigOption($moduleId, $name, $default = '') {
if (!Loader::includeModule('main')) {
return $default;
}
return Option::get($moduleId, $name, $default);
}
/**
* Запись опции через D7 API
* @param string $moduleId ID модуля
* @param string $name Имя опции
* @param string $value Значение
* @return bool Успешно ли записано
*/
function setConfigOption($moduleId, $name, $value) {
if (!Loader::includeModule('main')) {
return false;
}
Option::set($moduleId, $name, $value);
return true;
}
/**
* Чтение опции через классический API
* @param string $moduleId ID модуля
* @param string $name Имя опции
* @param string $default Значение по умолчанию
* @return string Значение опции
*/
function getConfigOptionClassic($moduleId, $name, $default = '') {
return COption::GetOptionString($moduleId, $name, $default);
}
/**
* Запись опции через классический API
* @param string $moduleId ID модуля
* @param string $name Имя опции
* @param string $value Значение
* @return void
*/
function setConfigOptionClassic($moduleId, $name, $value) {
COption::SetOptionString($moduleId, $name, $value);
}
Usage:
// Чтение опции через D7
$apiKey = getConfigOption('custom_module', 'api_key', '');
$timeout = getConfigOption('custom_module', 'timeout', '30');
// Запись опции через D7
setConfigOption('custom_module', 'api_key', 'secret_key_123');
setConfigOption('custom_module', 'timeout', '60');
// Чтение опции через классический API
$siteName = getConfigOptionClassic('main', 'site_name');
// Запись опции через классический API
setConfigOptionClassic('custom_module', 'enabled', 'Y');
// Работа с массивом (сериализация)
$settings = ['key1' => 'value1', 'key2' => 'value2'];
setConfigOption('custom_module', 'settings', serialize($settings));
$loadedSettings = unserialize(getConfigOption('custom_module', 'settings', ''));
Notes:
⚠️ Опции хранятся в таблице b_option. D7 API (Option::get/set) предпочтительнее классического (COption). Для хранения массивов используйте serialize()/unserialize() или JSON. Опции модуля доступны глобально и кешируются системой. Модуль main должен быть подключен для D7 API.