Настройки модулей (те, что задаются в административной панели) хранятся в базе данных в таблице b_option.
Для программного доступа к этим настройкам в Битрикс есть два API: старый (COption) и новый, на D7 (Option).
Когда это нужно?
- Когда ваш кастомный код должен использовать параметры, заданные в админке (например, API-ключ, ID инфоблока, флаг «включить/выключить фичу»).
- При установке модуля, чтобы записать значения по умолчанию.
- Для создания кастомных страниц настроек.
1. Классический подход: COption
Класс COption имеет два основных метода для чтения, разделенных по «типу», хотя по факту оба возвращают строку.
Чтение настройки: GetOptionString / GetOptionInt
- COption::GetOptionString($moduleId, $name, $defaultValue = «»)
- $moduleId: ID модуля (например, «main», «iblock», «my.module»).
- $name: Символьный код опции.
- $defaultValue: Значение, которое вернется, если опция не найдена.
// Получаем E-mail администратора из настроек главного модуля
$adminEmail = COption::GetOptionString("main", "email_from", "default@example.com");
// Получаем ID инфоблока новостей из настроек нашего модуля
$newsIblockId = COption::GetOptionInt("my.module", "news_iblock_id");
// GetOptionInt — это просто обертка над GetOptionString с приведением результата к (int).
// Запись настройки: `SetOptionString` / `SetOptionInt`
COption::SetOptionString($moduleId, $name, $value = "");
// Устанавливаем настройку для нашего модуля
COption::SetOptionString("my.module", "api_key", "xyz123abc");
Этот метод обычно используется в обработчиках форм на страницах настроек модуля.
2. Современный D7-подход: \Bitrix\Main\Config\Option
В ядре D7 появился новый класс, который унифицирует работу с опциями и делает код чище.
Подготовка:codePHP
use Bitrix\Main\Config\Option;
Чтение настройки: Option::get()
Метод get() заменяет собой и GetOptionString, и GetOptionInt.
// Получаем E-mail администратора
$adminEmail = Option::get("main", "email_from", "default@example.com");
// Получаем ID инфоблока новостей (нужно приводить к int самостоятельно)
$newsIblockId = (int)Option::get("my.module", "news_iblock_id", 0);
Запись настройки: Option::set()codePHP
// Устанавливаем настройку
Option::set("my.module", "api_key", "xyz123abc-new");
Удаление настройки: Option::delete()
В D7 появился удобный метод для удаления опций.
// Удаляем настройку
Option::delete("my.module", ["name" => "api_key"]);
// Можно удалить все настройки для модуля
Option::delete("my.module");
Сравнение подходов
Критерий | COption (старое API) | \Bitrix\Main\Config\Option (D7) |
Стиль | Процедурный, статические методы | ООП, статические методы в классе с неймспейсом |
Чтение | GetOptionString, GetOptionInt | Единый метод get() |
Запись | SetOptionString, SetOptionInt | Единый метод set() |
Удаление | RemoveOption (менее гибкий) | delete() с фильтром |
Рекомендации | Для поддержки старого кода | Для всех новых разработок |
Вывод:
Работа с настройками модулей — фундаментальная часть разработки на Битрикс.
Хотя старый COption все еще работает, для нового кода всегда используйте \Bitrix\Main\Config\Option.
Это делает ваш код более современным, читаемым и соответствующим стандартам D7.
COption, GetOptionString, SetOptionString, Bitrix\Main\Config\Option, настройки модуля, Битрикс, get, set, параметры.