Skip to content
  1. Компоненты
  2. MiniShop3
  3. Интерфейс админки
  4. Утилиты
  5. Поля товара

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

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

Настройка полей на вкладке Свойства товара в карточке товара — она лежит внутри внешней ExtJS-вкладки «Товар».

Cookbook

Секции, скрытие полей, связь с дополнительными полями: Cookbook полей товара. Сквозной пример: Оптовая цена.

Назначение ​

Инструмент управляет раскладкой полей на вкладке «Свойства товара»:

  • видимость и порядок полей
  • группы по секциям
  • подписи и xtype виджетов

Новую колонку в ms3_products — физической таблице msProductData — создают в разделе «Свои поля». После создания поля строка появляется здесь автоматически.

Интерфейс ​

Две карточки одна под другой, выбора секции в интерфейсе нет.

Секции ​

Верхняя карточка: таблица секций с сортировкой перетаскиванием. Колонки — перетаскивание, Видимость, Ключ, Название, Действия.

Поля ​

Нижняя карточка: все поля сразу, с колонкой «Секция». Фильтра по выбранной секции нет.

Колонки строки:

  • перетаскивание
  • Видимость — чекбокс прямо в строке, с последующим «Сохранить изменения»
  • Поле (ключ)
  • Название (label)
  • Тип (xtype)
  • Секция
  • Описание
  • Действия

Управление секциями ​

Создание секции ​

  1. Нажмите кнопку «Добавить секцию»
  2. Заполните форму:
ПолеОписаниеОбязательно
Ключ секцииУникальный идентификатор (латиница)Да
Ключ лексиконаКлюч для перевода названияТребуется одно из двух
НазваниеОтображаемое названиеТребуется одно из двух
СкрытаСекция не отображается в карточкеНет

Ключ секции не меняется

В диалоге правки поле ключа только для чтения. Сменить 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
seoSEOпустая секция — поля добавляете сами
additionalДополнительноtags, new, favorite, popular

Сохранение изменений ​

  • Перетаскивание порядок не сохраняет: интерфейс показывает напоминание, записывает изменения кнопка сохранения
  • При редактировании поля/секции нажмите «Сохранить»
  • Для применения изменений в карточке товара перезагрузите страницу

API-эндпоинты ​

Рядом с обычным чтением конфигурации есть GET /api/mgr/config/page-fields/{page_key}/all — он отдаёт поля вместе со скрытыми. В этом режиме конфигурацию читает сам редактор раскладки.

Получение конфигурации полей ​

http
GET /api/mgr/config/page-fields/product_data

Ответ:

json
{
  "success": true,
  "data": {
    "fields": [
      {
        "name": "article",
        "label": "Артикул",
        "xtype": "textfield",
        "section": 1,
        "visible": true,
        "sort_order": 0
      }
    ]
  }
}

Получение секций ​

http
GET /api/mgr/config/sections/product_data

Сохранение конфигурации полей ​

http
PUT /api/mgr/config/page-fields/product_data

Право записи: mssetting_save. Чтение (GET) доступно любой сессии менеджера без mssetting_save.

Тело запроса — массив fields (не одно поле):

json
{
  "fields": [
    {
      "name": "article",
      "label": "Артикул товара",
      "section": 1,
      "visible": true,
      "sort_order": 0
    }
  ]
}

Сохранение секций ​

Новую секцию интерфейс добавляет локально, затем сохраняет весь список:

http
PUT /api/mgr/config/sections/product_data
json
{
  "sections": [
    {
      "section_key": "custom",
      "lexicon_key": "ms3_section_custom",
      "label": "Дополнительно",
      "hidden": false,
      "sort_order": 100
    }
  ]
}

Удаление секции ​

http
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 или дополнительные поля.