Заметки по доработке настроек компонентов 1С-Битрикс

Опубликовано в Веб-разработка

Рассмотрим возможности интересной реализации страницы настроек компонента.

Полезные ссылки:

Стандартный список настроек

Часто используемые настройки в файле .parameters.php.

Типы полей

Тип Описание Пример кода
STRING

 Строка. 

Также в значение "по умолчанию" можно передать содеримое из языкового файла:

'DEFAULT' => GetMessage('SHOW_MORE'), 
$arTemplateParameters['BLOCK_TITLE'] = [
'NAME' => GetMessage('T_BLOCK_TITLE'),
'TYPE' => 'STRING',
'DEFAULT' => ''
];
LIST  
$arTemplateParameters['BLOCK_TITLE_POSITION'] = [
'NAME' => GetMessage('T_BLOCK_TITLE_POSITION'),
'TYPE' => 'LIST',
'VALUES' => [
'FLAT' => GetMessage('T_POSITION_FLAT'),
'TOP' => GetMessage('T_POSITION_TOP'),
],
'DEFAULT' => 'FLAT',
'REFRESH' => 'Y',
];
CHECKBOX  
$arTemplateParameters['ONE_ROW'] = [
'NAME' => GetMessage('T_ONE_ROW'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'Y',
];
     

Дополнительные опции

Параметр Описание Пример кода
 PARENT

Символьный код родительского блока опции.

Возможные варианты (для разных компонентов разные):

  • BASE
  • SECTIONS_SETTINGS
  • VISUAL
  • ADDITIONAL_SETTINGS
  • DATA_SOURCE
  • PRICES
  • LIST
$arTemplateParameters['SECTIONS_HIDE_SECTION_NAME'] = array(
'PARENT' => 'SECTIONS_SETTINGS',
'NAME' => GetMessage('CPT_BC_SECTIONS_HIDE_SECTION_NAME'),
'TYPE' => 'CHECKBOX',
'DEFAULT' => 'N'
);
     

Динамическое отображение настроек по условию

Чтобы не перегружать страницу настроек лишними параметрами (например, если не установлена опция "Отображать картинку", то нет смысла отображать дополнительную опцию "Расположение картинки"), в файле настроек компонента .parameters.php можно использовать успловные операторы:

$arTemplateParameters['BLOCK_TITLE_POSITION'] = [
'NAME' => GetMessage('T_BLOCK_TITLE_POSITION'),
'TYPE' => 'LIST',
'VALUES' => [
'FLAT' => GetMessage('T_POSITION_FLAT'),
'TOP' => GetMessage('T_POSITION_TOP'),
],
'DEFAULT' => 'FLAT',
'REFRESH' => 'Y',
];

if ($arCurrentValues['BLOCK_TITLE_POSITION'] === 'TOP') {
$arTemplateParameters['BLOCK_TITLE_TAG'] = [
'NAME' => GetMessage('T_BLOCK_TITLE_TAG'),
'TYPE' => 'LIST',
'VALUES' => CCustomUtils::BLOCK_TITLE_TAGS,
'ADDITIONAL_VALUES' => 'Y',
'DEFAULT' => 'div'
];
$arTemplateParameters['BLOCK_TITLE_CLASS'] = [
'NAME' => GetMessage('T_BLOCK_TITLE_CLASS'),
'TYPE' => 'STRING',
];
$arTemplateParameters['BLOCK_DESCRIPTION'] = [
'NAME' => GetMessage('T_BLOCK_DESCRIPTION'),
'TYPE' => 'STRING',
];
}

Прокидка переменной в языковую константу

В функцию GetMessage можно передать переменную (в нашем случае VALUE) дополнительным параметром в функции:

 $periodText = GetMessage('PRICE_YEAR_TEXT_DEFAULT', [
'VALUE' => number_format($priceYear, 0, '', ' '),
]);

Тогда в файле языковых переменных переменная VALUE должна быть записана следующим образом:

 $MESS['PRICE_YEAR_TEXT_DEFAULT'] = 'VALUE '.$MESS['CURRENCY_TEXT'].'/год.';

Tags: 1C-Bitrix 1С-Битрикс