Skip to content
  1. Компоненты
  2. msCurrency
  3. Админка

Управление валютами

Пункт меню: MiniShop3 → Валюты (msCurrency).

Интерфейс на Vue 3 + PrimeVue 4 (как вкладки MS3). Нужен VueTools — без него контроллер покажет предупреждение и не загрузит ESM-модуль.

Вкладки

ВкладкаНазначение
ВалютыCRUD, флаги base/active, ручные rate/coefficient/val, колонка Авто, кнопка «Синхронизировать курсы», поиск по коду/названию
Поставщики курсовВключение провайдеров из msc_providers
ПривязкиСвязь provider_id + currency_id + external_code (код валюты у источника)

Поля валюты

ПолеОписание
codeТри латинские буквы (USD, EUR, RUB)
rateКурс от провайдера или ручной
coefficientМножитель к курсу (наценка/скидка)
valrate × coefficient, пересчитывается при сохранении и синхронизации
baseРовно одна базовая валюта в системе
activeПоказывать на витрине и в переключателе

Базовую валюту удалить нельзя.

Валюты по умолчанию

При установке пакета резолвер добавляет (если записей ещё нет):

КодАктивнаБазовая
RUBдада
USDданет
EURданет
UAH, BYN, KZTнетнет

Поставщики: ЦБ РФ (включён), НБУ, НБРБ, НБК. Привязки для автообновления создаются автоматически (CBR → USD/EUR и т.д.).

Для Беларуси используйте код BYN (актуальный ISO), не BYR (снят с ISO).

Права доступа

Connector проверяет mscurrency_user_can_manage():

  • право mscurrency_save (рекомендуется контент-менеджеру магазина), или
  • стандартное право MODX save.

Право view не даёт изменять валюты и курсы.

Ключ API и авторизация

Встроенные поставщики

Отдельный ключ в msCurrency не вводится. Классы ходят на открытые официальные URL:

ПоставщикКод (getKey)Источник
ЦБ РФcbr_rucbr.ru/scripts/XML_daily.asp
НБУnbu_uabank.gov.ua (JSON)
НБРБnbrb_bynbrb.by/api/exrates
НБКnbk_kznationalbank.kz/rss

Нужен исходящий HTTPS с сервера MODX. При блокировке доменов ошибки попадут в errors[] после синхронизации.

Колонка «Код провайдера» в админке — внутренний идентификатор, не API-ключ.

Свой поставщик курсов

  1. PHP-файл в core/components/mscurrency/providers/, namespace mscurrency\Providers\.
  2. Класс — наследник AbstractMscRateProvider: getKey(), getCodes(), getCourse(), run().
  3. Поставщики курсов → Добавить поставщика → выбор класса.
  4. При необходимости — вкладка Привязки (external_codecode сайта).

Секрет платного API храните в системной настройке MODX или JSON в msc_providers.properties — не в git.

Пример в репозитории: providers/ExampleStaticRateProvider.php.

Connector API

URL: assets/components/mscurrency/connector.php Метод: POST, параметр action.

Валюты

actionПараметры
mgr/currency/getlist
mgr/currency/createcode, name, rate, coefficient, val, rank, active, base, symbol_*
mgr/currency/updateid + поля
mgr/currency/removeid

Поставщики и привязки

actionПараметры
mgr/provider/getlist
mgr/provider/getid
mgr/provider/scan
mgr/provider/createname, class
mgr/provider/updateid, name, active
mgr/providerlink/getlist
mgr/providerlink/createprovider_id, currency_id, external_code
mgr/providerlink/removeid

Курсы

actionПараметрыОтвет
mgr/rates/syncprovider_key (опционально)object.updated, object.errors[]

Синхронизация идёт по активным провайдерам. Если заданы привязки, обновляются только связанные валюты. Без привязок сопоставление идёт по коду (USDUSD).

Витрина

actionПараметры
web/currency/setid или currency_id — ID валюты

Вызывается из default.min.js. Connector для web задаёт ctx=web, иначе MODX ответит 401.

Cron

bash
php core/components/mscurrency/cron/sync_rates.php
php core/components/mscurrency/cron/course.php

Пример crontab (два раза в день):

cron
0 8,20 * * * /usr/bin/php /path/to/modx/core/components/mscurrency/cron/sync_rates.php

Выборочный провайдер: mscurrency_default_provider = cbr_ru или POST provider_key=cbr_ru в mgr/rates/sync.

См. также