Как создать файл настроек модуля без смешивания HTML и PHP?

Для создания файла настроек модуля в 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.