
Утилиты: Поля товара

Настройка полей на вкладке Свойства товара в карточке товара — она лежит внутри внешней ExtJS-вкладки «Товар».
Cookbook
Секции, скрытие полей, связь с дополнительными полями: Cookbook полей товара. Сквозной пример: Оптовая цена.
Назначение
Инструмент управляет раскладкой полей на вкладке «Свойства товара»:
- видимость и порядок полей
- группы по секциям
- подписи и xtype виджетов
Новую колонку в ms3_products — физической таблице msProductData — создают в разделе «Свои поля». После создания поля строка появляется здесь автоматически.
Интерфейс
Две карточки одна под другой, выбора секции в интерфейсе нет.
Секции
Верхняя карточка: таблица секций с сортировкой перетаскиванием. Колонки — перетаскивание, Видимость, Ключ, Название, Действия.
Поля
Нижняя карточка: все поля сразу, с колонкой «Секция». Фильтра по выбранной секции нет.
Колонки строки:
- перетаскивание
- Видимость — чекбокс прямо в строке, с последующим «Сохранить изменения»
- Поле (ключ)
- Название (label)
- Тип (xtype)
- Секция
- Описание
- Действия
Управление секциями
Создание секции
- Нажмите кнопку «Добавить секцию»
- Заполните форму:
| Поле | Описание | Обязательно |
|---|---|---|
| Ключ секции | Уникальный идентификатор (латиница) | Да |
| Ключ лексикона | Ключ для перевода названия | Требуется одно из двух |
| Название | Отображаемое название | Требуется одно из двух |
| Скрыта | Секция не отображается в карточке | Нет |
Ключ секции не меняется
В диалоге правки поле ключа только для чтения. Сменить section_key можно, лишь удалив секцию и создав заново, — а при удалении базовой секции её поля останутся без секции.
Лексикон
Если указан ключ лексикона, название берётся из файлов локализации. Интерфейс переводится на разные языки.
Редактирование секции
Кликните иконку редактирования справа от названия или дважды кликните секцию.
Удаление секции
Внимание
При удалении секции все её поля перемещаются в раздел «Без секции». Сами поля не удаляются.
Управление полями
Редактирование поля
Кликните поле, откроется диалог редактирования.
Доступные параметры:
| Параметр | Описание |
|---|---|
| Название (label) | Отображаемое название поля |
| Placeholder | Подсказка внутри поля ввода |
| Описание | Подсказка под полем |
| Секция | К какой секции принадлежит поле |
| Тип виджета (xtype) | Только при создании — в диалоге редактирования поле заблокировано |
| Видимость | Отображать ли поле в карточке |
| Ширина | Колонки сетки: целое от 1 до 12 |
Типы виджетов (xtype)
| Тип | Описание |
|---|---|
textfield | Однострочное текстовое поле |
numberfield | Числовое поле |
textarea | Многострочное текстовое поле |
xcheckbox, checkbox | Флажок (чекбокс) |
switch | Переключатель |
combobox | Выпадающий список |
colorpicker | Выбор цвета |
datefield | Поле даты |
ms3-combo-vendor | Выбор производителя |
ms3-combo-autocomplete | Автодополнение из списка |
ms3-combo-options | Выбор из опций товара |
ms3-combo-select | Выбор из заданного набора значений |
ms3-repeater | Таблица строк (JSON) |
ms3-key-value | Набор «ключ → значение» (JSON) |
Это полный список того, что умеет рисовать DynamicField.vue.
Перемещение полей
Поля перемещаете так:
- Внутри секции — перетаскиванием вверх/вниз
- Между секциями — изменением секции в диалоге редактирования
Стандартные секции
По умолчанию (сид product_data):
| Ключ | Название | Поля сида |
|---|---|---|
main | Основные данные | article, weight, color, size, vendor_id, made_in |
pricing | Цены и склад | price, old_price, stock |
seo | SEO | пустая секция — поля добавляете сами |
additional | Дополнительно | tags, new, favorite, popular |
Сохранение изменений
- Перетаскивание порядок не сохраняет: интерфейс показывает напоминание, записывает изменения кнопка сохранения
- При редактировании поля/секции нажмите «Сохранить»
- Для применения изменений в карточке товара перезагрузите страницу
API-эндпоинты
Рядом с обычным чтением конфигурации есть GET /api/mgr/config/page-fields/{page_key}/all — он отдаёт поля вместе со скрытыми. В этом режиме конфигурацию читает сам редактор раскладки.
Получение конфигурации полей
GET /api/mgr/config/page-fields/product_dataОтвет:
{
"success": true,
"data": {
"fields": [
{
"name": "article",
"label": "Артикул",
"xtype": "textfield",
"section": 1,
"visible": true,
"sort_order": 0
}
]
}
}Получение секций
GET /api/mgr/config/sections/product_dataСохранение конфигурации полей
PUT /api/mgr/config/page-fields/product_dataПраво записи: mssetting_save. Чтение (GET) доступно любой сессии менеджера без mssetting_save.
Тело запроса — массив fields (не одно поле):
{
"fields": [
{
"name": "article",
"label": "Артикул товара",
"section": 1,
"visible": true,
"sort_order": 0
}
]
}Сохранение секций
Новую секцию интерфейс добавляет локально, затем сохраняет весь список:
PUT /api/mgr/config/sections/product_data{
"sections": [
{
"section_key": "custom",
"lexicon_key": "ms3_section_custom",
"label": "Дополнительно",
"hidden": false,
"sort_order": 100
}
]
}Удаление секции
DELETE /api/mgr/config/sections/product_data/{section_key}Базовую секцию (main, pricing, seo, additional) удалить можно, и это необратимо: отдельного роута создания секций у этой утилиты нет — только GET, PUT и DELETE для /config/sections/{page_key}. Пересоздавать придётся вручную, с тем же section_key.
Запрет на удаление есть, но в другой утилите
Секцию по умолчанию защищает от удаления только «Поля форм (админка)»: ModelFieldSectionService отклоняет удаление секции с is_default. В «Полях товара» такой проверки нет ни в сервисе, ни в интерфейсе — кнопка удаления доступна для любой секции.
Примеры настройки
Скрытие ненужных полей
Если цвет и размер задаёте опциями, снимите видимость у полей color и size.
Создание секции «SEO»
Секция seo уже есть в сиде. Если удалили — добавьте снова (ключ seo). Поля вкладки «Документ» (longtitle, description) в product_data не входят: их видимость задаёт ms3_product_main_fields. В пустую SEO-секцию переносят свои поля из main / additional или дополнительные поля.
