
Поле «Оптовая цена» у товара
Добавьте числовое extra field к данным товара и настройте, где оно появится в менеджере.
Цель
Менеджер вводит оптовую цену на вкладке Данные. Значение лежит в ms3_product_data и сохраняется вместе с карточкой товара.
Что понадобится
- MiniShop3 1.13.x
- Право
mssetting_save - Право редактирования ресурса товара
Шаг 1. Создайте extra field
- Extras → MiniShop3 → Утилиты → Дополнительные поля.
- Класс msProductData (Данные товара).
- Создать поле:
| Параметр | Значение |
|---|---|
| Ключ | wholesale_price |
| Название | Оптовая цена |
| xtype | numberfield |
| dbtype | decimal |
| precision | 12,2 |
| phptype | float |
| Активно | да |
Пакет добавит колонку в таблицу и строку в ms3_product_fields.
Класс в БД
В UI класс сохраняется как MiniShop3\Model\msProductData. В POST укажите то же значение в поле class.
Шаг 2. Раскладка на вкладке «Данные»
- Утилиты → Поля товара.
- Найдите Оптовая цена (или перенесите из «Без секции»).
- Положите поле в секцию Основные данные или создайте секцию Цены.
- Включите Видимость, задайте порядок.
- Перезагрузите карточку товара.
Подробнее: Cookbook полей товара.
Шаг 3. Колонка в таблице категории (опционально)
- Утилиты → Колонки гридов → грид category-products.
- Добавьте колонку
wholesale_price, тип price. - В displayConfig задайте формат, например:
{
"decimals": 2,
"currency": "₽",
"currency_position": "after",
"thousands_separator": " "
}Шаг 4. Проверка
GET /api/mgr/extra-fields?class=MiniShop3\Model\msProductDataОткройте товар, введите значение, сохраните. В ответе GET карточки товара должно быть "wholesale_price": 1200.5.
Импорт CSV
Колонку wholesale_price можно сопоставить в Утилиты → Импорт, если поле уже создано и миграция прошла. Repeater и key-value в CSV не поддерживаются.
Отличие от полей модели
Extra field создаёт колонку. Поля модели меняют форму заказа и других сущностей MS3, но не раскладку вкладки «Данные» товара. Для новой колонки в ms3_product_data берите extra fields, затем Поля товара.
API appendix
| Метод | Путь | Права |
|---|---|---|
| POST | /api/mgr/extra-fields | mssetting_save |
| PUT | /api/mgr/config/page-fields/product_data | mssetting_save |
| PUT | /api/mgr/grid-config/category-products | mssetting_save |
Troubleshooting
| Симптом | Что проверить |
|---|---|
| Поле в утилите, но не на вкладке | visible в Поля товара, перезагрузка страницы |
| Нет в списке Поля товара | Запись в ms3_product_fields после POST extra field |
| Колонка пустая в гриде | Тип price или model, имя совпадает с ключом extra field |
| Ошибка миграции | Лог MODX, права на core/components/minishop3/migrations |
См. Cookbook extra fields, Товар.
