Практические рецепты
Ниже — примеры вывода телефона, кнопки, подписей списка и даты. Для каждого указано, какие настройки нужно создать и какой результат проверить.
Сначала подготовьте настройки в административной панели. Затем добавьте код в тестовый шаблон после подключения ядра Битрикса и модуля:
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».
$phone = Settings::get('contacts', 'phone', 's1', ''); echo htmlspecialcharsbx($phone);
Результат: текст телефона в HTML. Затем менеджер меняет поле и сохраняет — текст обновляется без изменения PHP. Это вывод текста, не готовая ссылка tel:; для неё нужна отдельная нормализация номера.
Показать кнопку только при включённом переключателе
Подготовка: на s1 в base есть useButton: boolean / checkbox, значение true; buttonTitle: string / input, значение «Связаться с нами», родитель useButton. Страница /contacts/ существует.
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 / «Поддержка»; выберите только «Поддержка».
$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.
$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».
$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 явно, чтобы прочитать нужный сайт.
Проверка после интеграции
- Сохраните значение в админке без ошибок.
- Проверьте непосредственный результат API для нужного адреса.
- Откройте публичную страницу с подключённым шаблоном.
- При старом HTML проверьте кеш компонента или страницы:
Settings::clearCache()очищает только кеш модуля.
Для обычного текста выше используется htmlspecialcharsbx(). Не копируйте это как универсальное экранирование для JavaScript, URL или произвольного HTML. См. подключение в коде.