Для создания файла настроек модуля в 1C-Bitrix без смешивания HTML и PHP вам понадобятся следующие шаги:
1. Создайте PHP-класс, который будет отвечать за обработку настроек модуля. Для этого создайте файл class.php
в папке модуля.
class MyModuleOptions { public function GetTabs() { return array( array( 'DIV' => 'tab1', 'TAB' => 'Настройки', 'TITLE' => 'Настройки модуля', ), ); } public function GetOptions() { return array( 'option1' => array( 'TAB' => 'tab1', 'TITLE' => 'Опция 1', 'TYPE' => 'text', 'DEFAULT' => 'Значение по умолчанию', ), ); } public function ShowSettings($strReturn) { $html = ''; // Вывод HTML-формы настроек модуля $html .= '<form method="POST" action="'.$APPLICATION->GetCurPage().'?mid='.urlencode($mid).'&lang='.LANGUAGE_ID.'" enctype="multipart/form-data">'."n"; $tabControl = new CAdminTabControl('tabControl', $this->GetTabs()); foreach ($this->GetOptions() as $optionCode => $optionData) { $html .= '<tr>'; $html .= ' <td width="50%" valign="top">'.$optionData['TITLE'].'</td>'; $html .= ' <td width="50%">'; if ($optionData['TYPE'] == 'text') { $html .= '<input type="text" name="'.htmlspecialcharsbx($optionCode).'" value="'.htmlspecialcharsbx($optionValue).'">'; } $html .= ' </td>'; $html .= '</tr>'; } $html .= '</form>'; if ($strReturn === 'html') { return $html; } else { echo $html; } } }
2. В файле options.php
вашего модуля добавьте следующий код:
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php'); use BitrixMainLoader; use BitrixMainContext; use BitrixMainLocalizationLoc; Loc::loadMessages(__FILE__); $moduleId = 'mymodule'; Loader::includeModule($moduleId); $options = new MyModuleOptions(); $APPLICATION->SetTitle('Настройки модуля'); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php'); $options->ShowSettings('html'); require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');
3. Создайте файл переводов options.php
в папке модуля с текстами настроек:
$MESS['MYMODULE_OPTIONS_TAB_SETTINGS'] = 'Настройки'; $MESS['MYMODULE_OPTIONS_TITLE_SETTINGS'] = 'Настройки модуля'; $MESS['MYMODULE_OPTIONS_OPTION1'] = 'Опция 1';
4. Если вы хотите, чтобы настройки были доступны только администраторам, добавьте следующий код в файл options.php
:
/** @global CMain $APPLICATION */ if (!$USER->CanDoOperation('edit_other_settings')) { $APPLICATION->AuthForm('Доступ запрещен'); }
Теперь вы можете создавать файлы настроек модуля без смешивания HTML и PHP. Обратите внимание, что приведенный выше код предназначен исключительно для демонстрационных целей и может потребовать дополнительных настроек в зависимости от конкретных требований вашего модуля и платформы 1C-Bitrix.