Skip to content
MiniShop3
MiniShop3
Современный компонент интернет-магазина для MODX 3
  1. Компоненты
  2. MiniShop3
  3. Системные настройки

Системные настройки

Все системные настройки 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_categoriesID категорий через запятую для списка чанков
ms3_use_schedulerfalseИспользовать компонент Scheduler для фоновых задач

Категория товаров

НастройкаПо умолчаниюОписание
ms3_template_category_defaultШаблон по умолчанию для новых категорий
ms3_category_show_nested_productstrueПоказывать вложенные товары из подкатегорий
ms3_category_show_optionsfalseПоказывать опции товаров в таблице категории
ms3_category_id_as_aliasfalseИспользовать ID категории как псевдоним URL
ms3_category_content_default(не в transport)Содержимое для новых категорий (вызов сниппета). Читается JS панели категории при создании ресурса. Создайте ключ вручную, если нужен автоматически заполненный content
ms3_category_products_default_rows20 (fallback в коде)Строк на странице в таблице товаров категории. Ключ не входит в transport, но контроллер category/update читает его через getOption(..., 20)
mgr_tree_icon_mscategoryicon icon-barcodeCSS-класс иконки категории в дереве ресурсов

Товар

Основные поля

НастройкаПо умолчаниюОписание
ms3_template_product_defaultШаблон по умолчанию для новых товаров
ms3_product_main_fieldspagetitle,longtitle,description,introtext,contentОсновные поля на панели товара
ms3_product_extra_fieldsprice,old_price,article,weight,color,size,vendor_id,made_in,tags,new,popular,favoriteДополнительные поля товара
ms3_product_show_in_tree_defaultfalseПоказывать новые товары в дереве ресурсов
ms3_product_id_as_aliasfalseИспользовать ID товара как псевдоним URL
ms3_product_remember_tabstrueЗапоминать активную вкладку панели товара
mgr_tree_icon_msproducticon icon-tagCSS-класс иконки товара в дереве ресурсов

Вкладки товара

НастройкаПо умолчаниюОписание
ms3_product_tab_extratrueПоказывать вкладку свойств товара
ms3_product_tab_gallerytrueПоказывать вкладку галереи
ms3_product_tab_linkstrueПоказывать вкладку связей товара
ms3_product_tab_optionstrueПоказывать вкладку опций
ms3_product_tab_categoriestrueПоказывать вкладку категорий

Галерея

НастройкаПо умолчаниюОписание
ms3_product_source_default0ID источника файлов для галереи по умолчанию
ms3_product_thumbnail_default{assets_url}components/minishop3/img/mgr/ms3_small.pngПуть к изображению-заглушке
ms3_product_thumbnail_sizesmallРазмер превью по умолчанию

Форматирование цен и веса

НастройкаПо умолчаниюОписание
ms3_price_format[2, ".", " "]Формат цены: [знаки после запятой, разделитель дробной части, разделитель тысяч]
ms3_weight_format[3, ".", " "]Формат веса: [знаки после запятой, разделитель дробной части, разделитель тысяч]
ms3_price_format_no_zerostrueУбирать лишние нули в ценах (15.00 → 15)
ms3_weight_format_no_zerostrueУбирать лишние нули в весе
ms3_price_snippetИмя сниппета-модификатора цены
ms3_weight_snippetИмя сниппета-модификатора веса
ms3_currency_symbolСимвол валюты (₽, $, €, £, ₴, ¥, ₸)
ms3_currency_positionafterПозиция символа: before ($ 100) или after (100 ₽)
ms3_weight_unitkgЕдиница измерения веса (например kg, г, lbs, oz). Используется в *_formatted плейсхолдерах

Корзина

НастройкаПо умолчаниюОписание
ms3_cart_contextfalseИспользовать единую корзину для всех контекстов
ms3_cart_max_count1000Максимальное количество товаров в корзине
ms3_cart_page_id0ID страницы корзины. Ссылка «Перейти в корзину» в блоке корзины и редиректы JS
ms3_order_page_id0ID страницы оформления. Ссылка «Оформить заказ» из корзины

Заказы

Общие настройки

НастройкаПо умолчаниюОписание
ms3_order_format_numymФормат нумерации заказов (date() формат)
ms3_order_format_num_separator/Разделитель в номере заказа
ms3_date_formatd.m.y H:MФормат дат в админке
ms3_order_user_groupsГруппы для регистрации покупателей (через запятую)
ms3_order_show_draftsfalseПоказывать черновики в списке заказов в админке
ms3_order_redirect_thanks_id1ID страницы "Спасибо за заказ"
ms3_order_success_page_id0ID страницы успешной оплаты
ms3_order_register_user_on_submitfalseСоздавать modUser при оформлении заказа
ms3_email_managerEmail-адреса менеджеров для уведомлений (через запятую)
ms3_delete_drafts_afterУдалять старые черновики (strtotime формат: -1 year, -2 weeks)
ms3_order_log_actionsstatus,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_draft1ID статуса «Черновик»
ms3_status_new2ID статуса нового заказа после submit
ms3_status_paid3ID статуса оплаченного заказа
ms3_status_canceled5ID статуса отменённого заказа
ms3_status_for_stat2,3ID статусов для статистики выполненных заказов

Статусы после установки

Миграция 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_id0ID страницы входа
ms3_customer_register_page_id0ID страницы регистрации
ms3_customer_profile_page_id0ID страницы профиля
ms3_customer_addresses_page_id0ID страницы адресов
ms3_customer_orders_page_id0ID страницы истории заказов
ms3_customer_redirect_after_login0ID страницы для редиректа после входа (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_ordertrueАвтоматически регистрировать клиента при заказе
ms3_customer_auto_login_on_ordertrueАвтоматически авторизовать после заказа
ms3_customer_auto_login_after_registertrueАвтоматически авторизовать после регистрации
ms3_customer_require_email_verificationfalseТребовать подтверждение email
ms3_customer_send_welcome_emailtrueОтправлять приветственное письмо
ms3_customer_require_privacy_consenttrueТребовать согласие на обработку данных (GDPR)

Отмена заказов

НастройкаПо умолчаниюОписание
ms3_customer_cancel_allowed_statuses2,3ID статусов, при которых покупатель может отменить заказ (через запятую). По умолчанию: новый и оплаченный

Настройка отмены заказов

Покупатель видит кнопку «Отменить заказ» только для заказов со статусом из этого списка. При отмене заказ переводится в статус ms3_status_canceled.

Чтобы запретить отмену заказов покупателями, оставьте настройку пустой.

Синхронизация с modUser

По умолчанию выключено. ЛК работает на msCustomer и токене MS3. Включайте sync, если нужны группы MODX, ACL или общие сессии с другими компонентами.

НастройкаПо умолчаниюОписание
ms3_customer_sync_enabledfalseВключить синхронизацию msCustomer ↔ modUser
ms3_customer_sync_create_moduserfalseСоздавать modUser при регистрации msCustomer
ms3_customer_sync_delete_with_userfalse (не в transport)Удалять msCustomer при удалении modUser. Ключ читается плагином minishop3.php, при необходимости создайте вручную
ms3_customer_sync_user_group0ID группы для новых modUser
ms3_customer_duplicate_fields["email", "phone"]JSON-массив полей для проверки дубликатов

Безопасность

Токены

НастройкаПо умолчаниюОписание
ms3_customer_token_ttl86400Время жизни токена клиента (секунды, 24 часа)
ms3_customer_api_token_ttl86400Время жизни API токена (секунды, 24 часа)
ms3_password_reset_token_ttl3600Время жизни токена сброса пароля (секунды, 1 час)
ms3_email_verification_token_ttl86400Время жизни токена верификации email (секунды, 24 часа)
ms3_email_verification_urlКастомный URL для письма подтверждения email. Если пусто — ссылка ведёт на Web API api.php?route=…/email/verify&token=…&html=1
ms3_email_verification_success_urlURL, на который редиректит после успешного подтверждения email. Если пусто — возвращается на сайт с ?ms3_email_verified=1
ms3_snippet_token_secret(автогенерация)Секретный ключ для токенов сниппетов
ms3_snippet_cache_ttl3600Время кеширования параметров сниппетов (секунды)
ms3_payment_secretСекретный ключ для платёжных уведомлений
ms3_payment_link_statuses(пусто → ms3_status_new)CSV ID статусов, при которых PaymentLinkResolver отдаёт URL оплаты в письмах и msGetOrder

Защита от брутфорса

НастройкаПо умолчаниюОписание
ms3_customer_max_login_attempts5Максимум неудачных попыток входа
ms3_customer_block_duration300Длительность блокировки (секунды, 5 минут)

Требования к паролю

НастройкаПо умолчаниюОписание
ms3_password_min_length8Минимальная длина пароля
ms3_password_require_uppercasefalseТребовать заглавные буквы
ms3_password_require_numberfalseТребовать цифры
ms3_password_require_specialfalseТребовать спецсимволы

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_debugfalseРежим отладки API (расширенное логирование)
ms3_cors_allowed_origins-Разрешённые origin для CORS: пусто = только same-origin, * = любой (без credentials), либо список через запятую
ms3_rate_limit_max_attempts60Максимум запросов за период
ms3_rate_limit_decay_seconds60Период лимита запросов (секунды)
ms3_rate_limit_storefileХранилище счётчиков: file, redis, memcached
ms3_rate_limit_storage_path-Каталог для file (пусто = системный temp)
ms3_rate_limit_redis_dsn-DSN Redis (если задан, перекрывает host/port)
ms3_rate_limit_redis_host127.0.0.1Хост Redis
ms3_rate_limit_redis_port6379Порт Redis
ms3_rate_limit_redis_password-Пароль Redis
ms3_rate_limit_redis_database0Номер БД Redis
ms3_rate_limit_memcached_servers127.0.0.1:11211Список серверов Memcached

Сайт (Frontend)

НастройкаПо умолчаниюОписание
ms3_token_namems3_tokenИмя токена для идентификации посетителя
ms3_register_global_configtrueРегистрировать ms3Config в DOM
ms3_frontend_assetsJSON-массивСписок подключаемых 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_fieldspagetitle,parent,price,articleПоля для импорта
ms3_utility_import_fields_delimiter;Разделитель колонок CSV
ms3_import_sync_limit300Лимит синхронного импорта (строк)
ms3_import_preview_rows5Строк для предпросмотра
ms3_import_upload_pathassets/import/Путь для загрузки файлов импорта

Уведомления

Email

НастройкаПо умолчаниюОписание
ms3_email_managerEmail-адреса менеджеров для уведомлений (через запятую)

Telegram

НастройкаПо умолчаниюОписание
ms3_telegram_bot_tokenТокен Telegram бота (получить у @BotFather)
ms3_telegram_managerCSV chat ID менеджеров для уведомлений о смене статуса. Читается OrderStatusService параллельно с Утилиты → Уведомления

Настройка Telegram бота

  1. Создайте бота через @BotFather и получите токен
  2. Укажите токен в ms3_telegram_bot_token
  3. Получателей задайте одним из способов:
    • Утилиты → Уведомления — канал Telegram, recipient_value = chat ID (рекомендуется с 1.11+)
    • ms3_telegram_manager — CSV chat ID для legacy-рассылки при смене статуса

Chat ID можно узнать через @userinfobot.

Примеры использования

Получение настройки в PHP

php
$priceFormat = $modx->getOption('ms3_price_format');
$currencySymbol = $modx->getOption('ms3_currency_symbol');

Получение настройки в Fenom

fenom
{* Символ валюты *}
{'ms3_currency_symbol' | option}

{* ID страницы профиля клиента *}
{'ms3_customer_profile_page_id' | option}

Формат цены

Настройка ms3_price_format принимает JSON-массив:

json
[2, ".", " "]
  • 2 — количество знаков после запятой
  • "." — разделитель дробной части
  • " " — разделитель тысяч

Результат: 1 234.56

Модификатор цены

Создайте сниппет для динамического изменения цены:

php
<?php
// Сниппет: myPriceModifier
// Параметры: $product (msProductData)

$price = $product->get('price');

// Применяем скидку 10% для определённой категории
if ($product->get('parent') == 5) {
    $price = $price * 0.9;
}

return $price;

Укажите имя сниппета в настройке ms3_price_snippet:

myPriceModifier