
Поле «Оптовая цена» у товара
Добавьте своё числовое поле к данным товара и настройте, где оно появится в админке.
Цель
Менеджер вводит оптовую цену на вкладке Данные. Значение лежит в ms3_products (модель msProductData) и сохраняется вместе с карточкой товара.
Что понадобится
- MiniShop3 1.14.x
- Право
mssetting_save - Право
msproduct_save(чтение и запись вкладки «Данные»)
Шаг 1. Создайте своё поле
- Пакеты → 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 можно сопоставить в Утилиты → Импорт, если поле уже создано и миграция прошла.
Отличие от полей модели
Для новой колонки в ms3_products берите Свои поля, затем Поля товара. Своё поле создаёт колонку, а поля модели меняют форму заказа и других сущностей MiniShop3, но не вкладку «Данные» товара.
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 своего поля |
| Колонка пустая в гриде | Тип price или model, имя совпадает с ключом своего поля |
| Ошибка миграции | Лог MODX, права на core/components/minishop3/migrations |
См. Cookbook своих полей, Товар.
