Описание для системных настроек MODX из словаря

Есть распространённая проблема: компоненты из репозитория обычно идут с системными настройками, которые выглядят примерно так:

А хотелось бы вот так:

Все потому, что у объекта modSystemSetting нет полей для хранения ключа записи в словаре, в отличии от параметров сниппетов или плагинов.

Лично мне было лень разбираться, откуда же берутся нормальные записи для настроек ядра, если в объекте и БД их нет, но сегодня я себя переборол и всё прояснилось.

Для того, чтобы были нормальные записи в системных настройках при установке компонента, нужно делать так:
Создание настройки в _build/data/transport.settings.php
$settings['ms2_category_grid_fields']= $modx->newObject('modSystemSetting');
$settings['ms2_category_grid_fields']->fromArray(array(
	'key' => 'ms2_category_grid_fields',
	'value' => 'id,pagetitle,article,price,weight,image',
	'xtype' => 'textarea',
	'namespace' => 'minishop2',
	'area' => 'ms2_category',
),'',true,true);

Записи для неё в дефолтном словаре компонента default.inc.php:
$_lang['setting_ms2_category_grid_fields'] = 'Поля таблицы товаров';
$_lang['setting_ms2_category_grid_fields_desc'] = 'Список видимых полей таблицы с товарами категории, через запятую.';

И запись для пространства (area), в которой находится настройка, в примере это ms2_category
$_lang['area_ms2_category'] = 'Категория товаров';
Именно так и никак иначе.
Перед каждой записью в словаре для настроек должно быть setting_, а расширенное описание еще и должно оканчиваться на _desc. Название группы настроек начинается с area_.

Такое наименование записей для вывода в настройках жестко зашито в класс modContextSetting, и изменить этого никак нельзя.
Василий Наумкин
24 января 2013, 12:38
modx.pro
3
3 145
0

Комментарии: 8

Іван Клімчук
24 января 2013, 16:53
0
Про area не знал, остальное подсмотрел в примерах других плагинов и использовал сразу же.

Но чувствуется какая-то недоработка в этом, как костыль выглядит.
Василий Краковецкий
24 января 2013, 17:02
0
А вот я разобрался когда делал — на самом деле всё просто- нужно написать «setting_» + полное название компонента + "..." чтобы нужные записи подгружались из лексикона компонента, для минишопа выглядит вот так —
а после просто указать требуемые ключи в словаре компонента (core/components/minishop/lexicon/ru/default.inc.php) —
$_lang['setting_minishop.path_store_images'] = 'Путь для загружаемых изображений';
$_lang['setting_minishop.path_store_images_desc'] = 'Путь от корня сайта до папки в которую будут загружаться изображения. По умолчанию - assets/goods_images/';
Valentin Rasulov
25 января 2013, 04:44
0
Нда, когдато я тебе Василий о этом уже рассказывал, наверное ты меня не слышал тогда… :(
Да и копаться не нужно, нужно доки читать
rtfm.modx.com/display/revolution20/System+Settings
The values used to describe system settings can be optionally localized (i.e. translated) by referencing a specific localization file. The lexicon keys follow a specific format:
Name: setting_ + Key
Description: setting_ + Key + _desc
Tema
26 января 2015, 09:58
0
Люди добрые, имеем натройку [[++site_start]], могу ли я ее изменить как нибудь??
или вот такая настройка, [[++tag_mgr2.propertySetName]]
можно ли ее как нибудь изменить? например, [[++tag_mgr2? &propertySetName=`ololol`]] но так не получается, если это вообще возможно подскажите как, плз.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    8