Практические рецепты

Ниже — примеры вывода телефона, кнопки, подписей списка и даты. Для каждого указано, какие настройки нужно создать и какой результат проверить.

Сначала подготовьте настройки в административной панели. Затем добавьте код в тестовый шаблон после подключения ядра Битрикса и модуля:

PHP
use Bitrix\Main\Loader;
use Kokhanenko\Settings\Settings;

if (!Loader::includeModule('kokhanenko.settings')) {
    return;
}

note

В примерах используется код сайта s1. Если у вашего сайта другой код, замените его во всех вызовах. Номера телефонов в примерах вымышленные.

Вывести телефон

Подготовка: на s1 создайте раздел contacts, группу «Контактные данные», настройку phone: string / input, начальное значение «+7 (000) 000-00-00».

PHP
$phone = Settings::get('contacts', 'phone', 's1', '');
echo htmlspecialcharsbx($phone);

Результат: текст телефона в HTML. Затем менеджер меняет поле и сохраняет — текст обновляется без изменения PHP. Это вывод текста, не готовая ссылка tel:; для неё нужна отдельная нормализация номера.

Показать кнопку только при включённом переключателе

Подготовка: на s1 в base есть useButton: boolean / checkbox, значение true; buttonTitle: string / input, значение «Связаться с нами», родитель useButton. Страница /contacts/ существует.

PHP
if (Settings::get('base', 'useButton', 's1', false)) {
    $title = Settings::get('base', 'buttonTitle', 's1', '');
    echo '<a href="/contacts/">' . htmlspecialcharsbx($title) . '</a>';
}

Результат: ссылка с подписью. При сохранённом false ссылка не выводится. Чтение одного buttonTitle без проверки родителя недостаточно: зависимость не фильтрует дочернее значение в API.

Получить подписи выбранных вариантов

Подготовка: на s1 в contacts создайте departments: enum, множественный выбор, варианты sales / «Продажи» и support / «Поддержка»; выберите только «Поддержка».

PHP
$options = Settings::selectedOptions('contacts', 'departments', 's1');
$labels = array_column($options, 'label');
echo htmlspecialcharsbx(implode(', ', $labels));

Результат: «Поддержка». Если выбрать оба варианта — «Продажи, Поддержка» в порядке определения. Для одиночного списка этот код тоже работает: selectedOptions() всегда возвращает массив пар. Перед вызовом убедитесь, что параметр имеет тип enum.

Обработать необязательную дату

Подготовка: на s1 в contacts создайте reopenDate: date / calendar. Сначала оставьте дату пустой, затем задайте 2026-10-13.

PHP
$date = Settings::get('contacts', 'reopenDate', 's1', null);
if ($date !== null) {
    $parts = explode('-', $date);
    echo htmlspecialcharsbx($parts[2] . '.' . $parts[1] . '.' . $parts[0]);
}

Результат: при пустой дате ничего не выводится; при заданной — 13.10.2026. API возвращает строку YYYY-MM-DD, не объект даты и не timestamp. Если необходимо различать отсутствие параметра и пустую дату, добавьте has().

Один ключ на двух сайтах

Подготовка: в Битриксе существуют s1 и s2, раздел contacts доступен обоим. Создайте phone отдельно на каждом сайте: на s1 — «+7 (000) 000-00-00», на s2 — «+7 (000) 111-11-11».

PHP
$first = Settings::get('contacts', 'phone', 's1', '');
$second = Settings::get('contacts', 'phone', 's2', '');
// $first  === '+7 (000) 000-00-00'
// $second === '+7 (000) 111-11-11'

Результат: для каждого сайта возвращается свой номер. Глобальный раздел может быть доступен обоим сайтам, но значения его настроек не копируются автоматически. Передавайте siteId явно, чтобы прочитать нужный сайт.

Проверка после интеграции

  1. Сохраните значение в админке без ошибок.
  2. Проверьте непосредственный результат API для нужного адреса.
  3. Откройте публичную страницу с подключённым шаблоном.
  4. При старом HTML проверьте кеш компонента или страницы: Settings::clearCache() очищает только кеш модуля.

Для обычного текста выше используется htmlspecialcharsbx(). Не копируйте это как универсальное экранирование для JavaScript, URL или произвольного HTML. См. подключение в коде.