Создание страницы пользовательских настроек в 1С-Битрикс

В 1С-Битрикс функционал настройки параметров для пользователей или администраторов сайта можно реализовать с помощью создания специальной страницы настроек. Это может быть полезно для кастомизации интерфейса, управления различными модулями и параметрами сайта.

В данной статье мы рассмотрим пошаговый процесс создания страницы настроек в административной части сайта на 1С-Битрикс с приведением примера кода.

1. Подготовка к созданию страницы настроек

Шаг 1. Создание файла настроек

Для начала вам нужно создать файл, который будет отвечать за отображение страницы настроек. Обычно такие файлы располагаются в папке /bitrix/admin/. Создайте новый файл, например, my_settings_page.php.

/bitrix/admin/my_settings_page.php

Шаг 2. Регистрация страницы в административном меню

Чтобы страница настроек была доступна через меню административной панели, ее нужно зарегистрировать в файле меню. Для этого создайте файл menu.php в папке вашего модуля (или используйте уже существующий). Например, если это кастомный модуль, разместите файл по адресу:

/bitrix/modules/my_module/admin/menu.php

Добавьте туда следующий код:

<?php
IncludeModuleLangFile(__FILE__);

$aMenu = array(
«parent_menu» => «global_menu_settings», // В какой раздел меню добавить (например, в «Настройки»)
«section» => «my_module_section», // Секция меню
«sort» => 100, // Порядок сортировки
«text» => «Мои настройки», // Название пункта меню
«title» => «Настройки модуля», // Всплывающая подсказка
«url» => «my_settings_page.php?lang=».LANGUAGE_ID, // Ссылка на страницу
«icon» => «util_menu_icon», // Иконка
«page_icon» => «util_page_icon», // Иконка для страницы
«items_id» => «menu_my_settings», // Идентификатор
«items» => array(), // Подменю
);

return $aMenu;

Этот код создаст пункт меню в административной панели, который будет вести на страницу настроек.

Шаг 3. Подключение страницы настроек

Теперь нужно создать саму страницу настроек. Откройте файл my_settings_page.php и добавьте туда следующий код:

<?php
// Подключаем пролог административной части
require_once $_SERVER[‘DOCUMENT_ROOT’] . ‘/bitrix/modules/main/include/prolog_admin_before.php’;

// Проверка прав пользователя (например, доступ только администраторам)
if (!$USER->IsAdmin()) {
$APPLICATION->AuthForm(GetMessage(‘ACCESS_DENIED’));
}

// Подключаем языковые файлы, если они есть
IncludeModuleLangFile(__FILE__);

// Обрабатываем POST-запрос, если форма была отправлена
if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’ && check_bitrix_sessid()) {
// Сохранение настроек
COption::SetOptionString(«my_module», «option_name», $_POST[‘option_name’]);
// Сообщение об успешном сохранении
CAdminMessage::ShowMessage(array(
«MESSAGE» => «Настройки сохранены»,
«TYPE» => «OK»
));
}

// Получаем текущее значение настройки
$current_value = COption::GetOptionString(«my_module», «option_name», «»);

// Заголовок страницы
$APPLICATION->SetTitle(«Настройки моего модуля»);

// Подключаем эпилог административной части
require($_SERVER[‘DOCUMENT_ROOT’] . ‘/bitrix/modules/main/include/prolog_admin_after.php’);
?>

<!— HTML форма для настроек —>
<form method=»POST» action=»<?= $APPLICATION->GetCurPage() ?>?lang=<?= LANGUAGE_ID ?>»>
<?= bitrix_sessid_post() ?>
<table class=»adm-detail-content-table edit-table»>
<tr>
<td width=»40%»>Название настройки:</td>
<td width=»60%»><input type=»text» name=»option_name» value=»<?= htmlspecialcharsbx($current_value) ?>» size=»50″></td>
</tr>
</table>
<input type=»submit» name=»save» value=»Сохранить» class=»adm-btn-save»>
</form>

<?php
// Подключаем эпилог административной части
require($_SERVER[‘DOCUMENT_ROOT’] . ‘/bitrix/modules/main/include/epilog_admin.php’);
?>

Пояснение к коду:

  1. Проверка прав пользователя: Мы проверяем, является ли пользователь администратором перед тем, как показывать ему страницу настроек.
  2. Обработка формы: Если форма была отправлена, проверяется наличие сессии с помощью функции check_bitrix_sessid(). Если проверка пройдена, сохраняется введенное значение с помощью функции COption::SetOptionString.
  3. Получение текущего значения: При загрузке страницы мы получаем сохраненное ранее значение настройки с помощью COption::GetOptionString.
  4. HTML-форма: Простая форма с одним текстовым полем для ввода значения настройки.
  5. bitrix_sessid_post(): Генерация скрытого поля с идентификатором сессии для защиты от CSRF-атак.

Шаг 4. Добавление языковых файлов

Если вы хотите, чтобы ваша страница поддерживала многоязычность, добавьте языковые файлы в папку lang. Например:

/bitrix/modules/my_module/lang/ru/admin/my_settings_page.php

В файле my_settings_page.php на русском языке добавьте строки:

$MESS[‘ACCESS_DENIED’] = «Доступ запрещен»;
$MESS[‘MY_SETTINGS_TITLE’] = «Настройки моего модуля»;

Теперь ваша страница будет поддерживать мультиязычность.

2. Итог

Мы рассмотрели, как шаг за шагом создать страницу настроек для вашего модуля в административной части 1С-Битрикс. Важные моменты:

  • Создание файла страницы настроек: Он размещается в папке /bitrix/admin/.
  • Регистрация страницы в меню: Через файл menu.php можно добавить ссылку на страницу в административное меню.
  • Обработка формы: С использованием стандартных функций 1С-Битрикс для работы с настройками и безопасности (например, bitrix_sessid_post()).
  • Поддержка мультиязычности: Можно добавить языковые файлы для отображения сообщений и заголовков на разных языках.

Пример можно легко адаптировать под нужды вашего проекта, добавив больше настроек, выпадающие списки, чекбоксы и другие элементы формы.