
Системные настройки
Все системные настройки MiniShop3 имеют префикс ms3_ и находятся в пространстве имён minishop3.
Для просмотра настроек перейдите в System → System Settings и выберите namespace minishop3.
Основные настройки
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_services_config | (не в transport) | Опциональная системная настройка: путь к ms3.services.php. Если ключ не задан, ServiceRegistry ищет файл в {core_path}config/ms3.services.php. Файл возвращает массив [service_id => ClassName] и переопределяет классы по умолчанию |
ms3_services_addons_dir | (не в transport) | Опциональная системная настройка: папка с фрагментами регистрации сервисов. По умолчанию {core_path}config/ms3.services.d/. Файлы *.php загружаются в алфавитном порядке после основного конфига |
ms3_assets_url | (не в transport) | Опциональное переопределение базового assets URL компонента. По умолчанию {assets_url}components/minishop3/ |
ms3_action_url | (не в transport) | Опциональное переопределение базового URL Web API. По умолчанию {ms3_assets_url}api.php |
ms3_core_path | (не в transport) | Опциональное переопределение пути к core-директории компонента. По умолчанию {core_path}components/minishop3/ |
ms3_version | (не в transport) | Опциональное переопределение версии в ответе эндпоинта /health (mgr и web API). Не создаётся автоматически, поэтому по умолчанию отдаётся 1.0.0 |
ms3_chunks_categories | ID категорий через запятую для списка чанков | |
ms3_use_scheduler | false | Использовать компонент Scheduler для фоновых задач |
Категория товаров
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_template_category_default | Шаблон по умолчанию для новых категорий | |
ms3_category_show_nested_products | true | Показывать вложенные товары из подкатегорий |
ms3_category_show_options | false | Показывать опции товаров в таблице категории |
ms3_category_id_as_alias | false | Использовать ID категории как псевдоним URL |
ms3_category_content_default | (не в transport) | Содержимое для новых категорий (вызов сниппета). Читается JS панели категории при создании ресурса. Создайте ключ вручную, если нужен автоматически заполненный content |
ms3_category_products_default_rows | 20 (fallback в коде) | Строк на странице в таблице товаров категории. Ключ не входит в transport, но контроллер category/update читает его через getOption(..., 20) |
mgr_tree_icon_mscategory | icon icon-barcode | CSS-класс иконки категории в дереве ресурсов |
Товар
Основные поля
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_template_product_default | Шаблон по умолчанию для новых товаров | |
ms3_product_main_fields | pagetitle,longtitle,description,introtext,content | Основные поля на панели товара |
ms3_product_extra_fields | price,old_price,article,weight,color,size,vendor_id,made_in,tags,new,popular,favorite | Дополнительные поля товара |
ms3_product_show_in_tree_default | false | Показывать новые товары в дереве ресурсов |
ms3_product_id_as_alias | false | Использовать ID товара как псевдоним URL |
ms3_product_remember_tabs | true | Запоминать активную вкладку панели товара |
mgr_tree_icon_msproduct | icon icon-tag | CSS-класс иконки товара в дереве ресурсов |
Вкладки товара
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_product_tab_extra | true | Показывать вкладку свойств товара |
ms3_product_tab_gallery | true | Показывать вкладку галереи |
ms3_product_tab_links | true | Показывать вкладку связей товара |
ms3_product_tab_options | true | Показывать вкладку опций |
ms3_product_tab_categories | true | Показывать вкладку категорий |
Галерея
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_product_source_default | 0 | ID источника файлов для галереи по умолчанию |
ms3_product_thumbnail_default | {assets_url}components/minishop3/img/mgr/ms3_small.png | Путь к изображению-заглушке |
ms3_product_thumbnail_size | small | Размер превью по умолчанию |
Форматирование цен и веса
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_price_format | [2, ".", " "] | Формат цены: [знаки после запятой, разделитель дробной части, разделитель тысяч] |
ms3_weight_format | [3, ".", " "] | Формат веса: [знаки после запятой, разделитель дробной части, разделитель тысяч] |
ms3_price_format_no_zeros | true | Убирать лишние нули в ценах (15.00 → 15) |
ms3_weight_format_no_zeros | true | Убирать лишние нули в весе |
ms3_price_snippet | Имя сниппета-модификатора цены | |
ms3_weight_snippet | Имя сниппета-модификатора веса | |
ms3_currency_symbol | ₽ | Символ валюты (₽, $, €, £, ₴, ¥, ₸) |
ms3_currency_position | after | Позиция символа: before ($ 100) или after (100 ₽) |
ms3_weight_unit | kg | Единица измерения веса (например kg, г, lbs, oz). Используется в *_formatted плейсхолдерах |
Корзина
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_cart_context | false | Использовать единую корзину для всех контекстов |
ms3_cart_max_count | 1000 | Максимальное количество товаров в корзине |
ms3_cart_page_id | 0 | ID страницы корзины. Ссылка «Перейти в корзину» в блоке корзины и редиректы JS |
ms3_order_page_id | 0 | ID страницы оформления. Ссылка «Оформить заказ» из корзины |
Заказы
Общие настройки
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_order_format_num | ym | Формат нумерации заказов (date() формат) |
ms3_order_format_num_separator | / | Разделитель в номере заказа |
ms3_date_format | d.m.y H:M | Формат дат в админке |
ms3_order_user_groups | Группы для регистрации покупателей (через запятую) | |
ms3_order_show_drafts | false | Показывать черновики в списке заказов в админке |
ms3_order_redirect_thanks_id | 1 | ID страницы "Спасибо за заказ" |
ms3_order_success_page_id | 0 | ID страницы успешной оплаты |
ms3_order_register_user_on_submit | false | Создавать modUser при оформлении заказа |
ms3_email_manager | Email-адреса менеджеров для уведомлений (через запятую) | |
ms3_delete_drafts_after | Удалять старые черновики (strtotime формат: -1 year, -2 weeks) | |
ms3_order_log_actions | status,products,field,address | Логируемые действия с заказом |
Поля в админке
Поля заказа, адреса и таблицы товаров
Раньше конфигурировались системными настройками ms3_order_grid_fields, ms3_order_address_fields, ms3_order_product_fields, ms3_order_product_options. Теперь управление идёт через Утилиты → Поля моделей (таблицы ms3_model_fields и ms3_model_field_sections, модели msOrder / msOrderAddress) и Утилиты → Настройки гридов (ms3_grid_fields) — системные настройки не читаются и удалены из документации.
Статусы заказов
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_status_draft | 1 | ID статуса «Черновик» |
ms3_status_new | 2 | ID статуса нового заказа после submit |
ms3_status_paid | 3 | ID статуса оплаченного заказа |
ms3_status_canceled | 5 | ID статуса отменённого заказа |
ms3_status_for_stat | 2,3 | ID статусов для статистики выполненных заказов |
Статусы после установки
Миграция seed_order_statuses создаёт пять записей в ms3_order_statuses (id 1–5: черновик, новый, оплачен, отправлен, отменён) и обновляет ms3_status_new, ms3_status_paid, ms3_status_canceled по фактическим id. Если вы меняли или удаляли статусы вручную, сверьте id в Настройки → Статусы с этими ключами.
Клиенты
Страницы ЛК и поведение регистрации. Витрина: Вход и регистрация.
login_page_id / register_page_id задают URL в ссылках. Формы по умолчанию рендерит msCustomer через unauthorizedTpl, отдельные чанки «только login» в пакете нет.
Страницы личного кабинета
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_customer_login_page_id | 0 | ID страницы входа |
ms3_customer_register_page_id | 0 | ID страницы регистрации |
ms3_customer_profile_page_id | 0 | ID страницы профиля |
ms3_customer_addresses_page_id | 0 | ID страницы адресов |
ms3_customer_orders_page_id | 0 | ID страницы истории заказов |
ms3_customer_redirect_after_login | 0 | ID страницы для редиректа после входа (0 = остаться) |
Авторизация и регистрация
auto_register_on_order / auto_login_on_order: гость при submit может стать msCustomer без формы ЛК. Выключите, если аккаунт создаёте только вручную.
require_email_verification: письмо со ссылкой на GET /api/v1/customer/email/verify. Пока email не подтверждён, часть сценариев ЛК может требовать повторную отправку.
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_customer_auto_register_on_order | true | Автоматически регистрировать клиента при заказе |
ms3_customer_auto_login_on_order | true | Автоматически авторизовать после заказа |
ms3_customer_auto_login_after_register | true | Автоматически авторизовать после регистрации |
ms3_customer_require_email_verification | false | Требовать подтверждение email |
ms3_customer_send_welcome_email | true | Отправлять приветственное письмо |
ms3_customer_require_privacy_consent | true | Требовать согласие на обработку данных (GDPR) |
Отмена заказов
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_customer_cancel_allowed_statuses | 2,3 | ID статусов, при которых покупатель может отменить заказ (через запятую). По умолчанию: новый и оплаченный |
Настройка отмены заказов
Покупатель видит кнопку «Отменить заказ» только для заказов со статусом из этого списка. При отмене заказ переводится в статус ms3_status_canceled.
Чтобы запретить отмену заказов покупателями, оставьте настройку пустой.
Синхронизация с modUser
По умолчанию выключено. ЛК работает на msCustomer и токене MS3. Включайте sync, если нужны группы MODX, ACL или общие сессии с другими компонентами.
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_customer_sync_enabled | false | Включить синхронизацию msCustomer ↔ modUser |
ms3_customer_sync_create_moduser | false | Создавать modUser при регистрации msCustomer |
ms3_customer_sync_delete_with_user | false (не в transport) | Удалять msCustomer при удалении modUser. Ключ читается плагином minishop3.php, при необходимости создайте вручную |
ms3_customer_sync_user_group | 0 | ID группы для новых modUser |
ms3_customer_duplicate_fields | ["email", "phone"] | JSON-массив полей для проверки дубликатов |
Безопасность
Токены
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_customer_token_ttl | 86400 | Время жизни токена клиента (секунды, 24 часа) |
ms3_customer_api_token_ttl | 86400 | Время жизни API токена (секунды, 24 часа) |
ms3_password_reset_token_ttl | 3600 | Время жизни токена сброса пароля (секунды, 1 час) |
ms3_email_verification_token_ttl | 86400 | Время жизни токена верификации email (секунды, 24 часа) |
ms3_email_verification_url | Кастомный URL для письма подтверждения email. Если пусто — ссылка ведёт на Web API api.php?route=…/email/verify&token=…&html=1 | |
ms3_email_verification_success_url | URL, на который редиректит после успешного подтверждения email. Если пусто — возвращается на сайт с ?ms3_email_verified=1 | |
ms3_snippet_token_secret | (автогенерация) | Секретный ключ для токенов сниппетов |
ms3_snippet_cache_ttl | 3600 | Время кеширования параметров сниппетов (секунды) |
ms3_payment_secret | Секретный ключ для платёжных уведомлений | |
ms3_payment_link_statuses | (пусто → ms3_status_new) | CSV ID статусов, при которых PaymentLinkResolver отдаёт URL оплаты в письмах и msGetOrder |
Защита от брутфорса
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_customer_max_login_attempts | 5 | Максимум неудачных попыток входа |
ms3_customer_block_duration | 300 | Длительность блокировки (секунды, 5 минут) |
Требования к паролю
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_password_min_length | 8 | Минимальная длина пароля |
ms3_password_require_uppercase | false | Требовать заглавные буквы |
ms3_password_require_number | false | Требовать цифры |
ms3_password_require_special | false | Требовать спецсимволы |
API
Web API (api.php): CORS, rate limit, отладка. Карта эндпоинтов: REST API.
ms3_cors_allowed_origins: по умолчанию пусто — cross-origin запрещён, работает только same-origin. Значение * разрешает любой origin (без credentials); для cookie-токена с другого домена перечислите точные origin через запятую, не *.
Rate limit режет все /api/v1/*. Хранилище счётчиков: ms3_rate_limit_store = file | redis | memcached (если ключи есть в вашей сборке). На одном сервере хватает file.
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_api_debug | false | Режим отладки API (расширенное логирование) |
ms3_cors_allowed_origins | - | Разрешённые origin для CORS: пусто = только same-origin, * = любой (без credentials), либо список через запятую |
ms3_rate_limit_max_attempts | 60 | Максимум запросов за период |
ms3_rate_limit_decay_seconds | 60 | Период лимита запросов (секунды) |
ms3_rate_limit_store | file | Хранилище счётчиков: file, redis, memcached |
ms3_rate_limit_storage_path | - | Каталог для file (пусто = системный temp) |
ms3_rate_limit_redis_dsn | - | DSN Redis (если задан, перекрывает host/port) |
ms3_rate_limit_redis_host | 127.0.0.1 | Хост Redis |
ms3_rate_limit_redis_port | 6379 | Порт Redis |
ms3_rate_limit_redis_password | - | Пароль Redis |
ms3_rate_limit_redis_database | 0 | Номер БД Redis |
ms3_rate_limit_memcached_servers | 127.0.0.1:11211 | Список серверов Memcached |
Сайт (Frontend)
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_token_name | ms3_token | Имя токена для идентификации посетителя |
ms3_register_global_config | true | Регистрировать ms3Config в DOM |
ms3_frontend_assets | JSON-массив | Список подключаемых CSS/JS файлов витрины (hooks.js, CartAPI.js, CartUI.js, ms3.js и др.) |
order-addresses.js в дефолтный список не входит. Подключайте отдельно, если на оформлении нужен UI сохранённых адресов клиента.
Плейсхолдеры для путей
В настройке ms3_frontend_assets доступны плейсхолдеры:
[[+assetsUrl]]—assets/components/minishop3/[[+jsUrl]]—assets/components/minishop3/js/[[+cssUrl]]—assets/components/minishop3/css/
Импорт
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_utility_import_fields | pagetitle,parent,price,article | Поля для импорта |
ms3_utility_import_fields_delimiter | ; | Разделитель колонок CSV |
ms3_import_sync_limit | 300 | Лимит синхронного импорта (строк) |
ms3_import_preview_rows | 5 | Строк для предпросмотра |
ms3_import_upload_path | assets/import/ | Путь для загрузки файлов импорта |
Уведомления
Email
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_email_manager | Email-адреса менеджеров для уведомлений (через запятую) |
Telegram
| Настройка | По умолчанию | Описание |
|---|---|---|
ms3_telegram_bot_token | Токен Telegram бота (получить у @BotFather) | |
ms3_telegram_manager | CSV chat ID менеджеров для уведомлений о смене статуса. Читается OrderStatusService параллельно с Утилиты → Уведомления |
Настройка Telegram бота
- Создайте бота через @BotFather и получите токен
- Укажите токен в
ms3_telegram_bot_token - Получателей задайте одним из способов:
- Утилиты → Уведомления — канал Telegram,
recipient_value= chat ID (рекомендуется с 1.11+) ms3_telegram_manager— CSV chat ID для legacy-рассылки при смене статуса
- Утилиты → Уведомления — канал Telegram,
Chat ID можно узнать через @userinfobot.
Примеры использования
Получение настройки в PHP
$priceFormat = $modx->getOption('ms3_price_format');
$currencySymbol = $modx->getOption('ms3_currency_symbol');Получение настройки в Fenom
{* Символ валюты *}
{'ms3_currency_symbol' | option}
{* ID страницы профиля клиента *}
{'ms3_customer_profile_page_id' | option}Формат цены
Настройка ms3_price_format принимает JSON-массив:
[2, ".", " "]2— количество знаков после запятой"."— разделитель дробной части" "— разделитель тысяч
Результат: 1 234.56
Модификатор цены
Создайте сниппет для динамического изменения цены:
<?php
// Сниппет: myPriceModifier
// Параметры: $product (msProductData)
$price = $product->get('price');
// Применяем скидку 10% для определённой категории
if ($product->get('parent') == 5) {
$price = $price * 0.9;
}
return $price;Укажите имя сниппета в настройке ms3_price_snippet:
myPriceModifier