Автор дополнения
Иван Бочкарев
Пакетов
17
Закачек
109
Обычно отвечает в течение суток
Автор дополнения
Пакетов
17
Закачек
109
Обычно отвечает в течение суток
Версия 1.0.0-pl
Дата выпуска 15.06.2026
Загрузки 0
Просмотры 37
Внимание, этот компонент требует PHP 8.2 или выше!
Внимание, этот компонент требует MODX 3 или выше.
💱 msCurrency — мультивалютность для MODX Revolution 3 и MiniShop3

Покупатель выбирает валюту на витрине. Магазин показывает цены, корзину и заказ в этой валюте. Курсы живут в менеджере MODX: обновление вручную или по cron. В каталоге с mFilter фильтр цены считает диапазон в валюте покупателя.


Переключатель, курсы ЦБ и других источников, цена товара в отдельной валюте, корзина в валюте пользователя, снимок валюты в заказе, Vue 3-админка, AJAX-переключатель, GeoIP, ECB и плагин mscurrency_payment_currency для кода валюты в платёжку.








Нужен:
  • переключатель ([[!msCurrency]], select, &compact=1) со стилями и CSS --msc-*;
  • пересчёт цен, корзины и заказа в валюте покупателя или в базовой;
  • Vue 3 MGR: дашборд курсов, валюты, поставщики, привязки, история sync;
  • cron: core/components/mscurrency/cron/sync_rates.php;
  • связка с mFilter, GeoIP и платёжными шлюзами MS3.







✨ Сниппеты
  • msCurrency — переключатель (tpl, compact, showLabel); пустой tpl выводит таблицу плейсхолдеров
  • msCurrencyPrice — цена (price, pid, cid, format)
  • msCurrencyPrices — цены во всех валютам (pid, old_price, symbol left/right)
  • msCurrencyCart / msCurrencyGetOrder — обёртки ms3_cart / ms3_get_order; в чанке [[+currency]]
  • mscLexiconScript — лексикон для JS

📌 Плейсхолдеры (msc.* и дубль msmc.*):
  • [[!+msc.code]], [[!+msc.symbol_left]], [[!+msc.symbol_right]]
  • [[!+msc.val]] (курс × коэффициент)
  • Заказ: {$order.properties.msc}, {$order.properties.msmc} (снимок валюты и курса)

🆕 Дополнительно
  • MODX 3, MiniShop3, PHP 8.2+
  • AJAX mscurrency_ajax_switch: цены и корзина без reload страницы
  • GeoIP: mscurrency_detect
  • Дашборд: Δ курса, устаревшие котировки, ошибки sync
  • Округление: математическое, вверх, вниз, до ,99
  • Поставщик ECB (EUR); лексиконы ru, en, uk, be, kk
  • mFilter: тип фильтра currency_price

📈 Курсы и cron
  • Поставщики: ЦБ РФ, НБУ, НБРБ, НБК, ECB
  • Свой класс: core/components/mscurrency/providers/ (RateProviderInterface)
  • Cron: php core/components/mscurrency/cron/sync_rates.php (обычно 1–2 раза в сутки)

🛒 MiniShop3
  • msc_price, валюта товара, блок в карточке MS3
  • mscurrency_order_price_mode: combo «цена в корзине в валюте пользователя» в системных настройках
  • Сетка категории: currency_id, msc_price, msc_old_price в ms3_category_grid_fields
  • Плагин mscurrency_payment_currency + mscurrency_payment_currency_option

🔍 mFilter
  • Плагин mscurrency_mfilter; фильтр ms3_product|price:currency_price
  • После смены валюты вызовите mfilter.reload()

🌍 Контексты
  • Параметр контекста mscurrency_selected_currency_default = ID валюты по умолчанию

🚀 Установка
  1. Extras → InstallerВалюты (msCurrency)
  2. Проверьте валюты, поставщики, привязки → Обновить курсы
  3. На шаблон: [[!msCurrency]], [[!msCurrencyPrice? &pid=`[[*id]]` &format=`1`]], [[!msCurrencyCart]]
  4. Платёжка: включите mscurrency_payment_currency, укажите ключ опции в настройках

📋 Требования
  • MODX Revolution 3.0+, PHP 8.2+, MiniShop3
  • pdoTools 3.x (Fenom-чанки); mFilter опционально

События: mscOnToggleCurrency, mscOnGetPrice, mscOnBeforeUpdateProductPrice. API: msc_get_service($modx)->getPrice(...).

Changelog - msCurrency

Format: Keep a Changelog Versioning: Semantic Versioning

[1.0.0-pl] - 2026-06-12

Первый публичный релиз для MODX 3 + MiniShop3.

Added

  • Справочник валют, базовая валюта, коэффициенты, символы, поле val.
  • Админка Vue 3: валюты, поставщики курсов, привязки, синхронизация; дашборд курсов (Δ, устаревшие котировки).
  • Поставщики из коробки: ЦБ РФ, ECB (EUR), НБУ, НБРБ, НБК; CLI cron/sync_rates.php.
  • Витрина: переключатель (список, select, компакт), сниппеты цен, корзины и заказа; плейсхолдеры msc.* / msmc.*; пункт меню в flyout «Пакеты».
  • Стили витрины default.css с CSS-переменными --msc-*, чанки pill-переключателя и списка цен; FRONTEND.md.
  • MiniShop3: валюта и цены товара (currency_id, msc_price), режим корзины base / user, снимок валюты в заказе.
  • Округление цены по валюте (price_rounding, включая to_99).
  • GeoIP (опционально): автовыбор валюты, уважение ручного переключения.
  • AJAX-смена валюты (opt-in): mscurrency_ajax_switch.
  • Интеграции: mFilter (currency_price), код валюты в платёжку, события mscOn*.
  • Лексиконы ru, en, uk, be, kk; PHPUnit-тесты без полного modX.

Fixed

  • Конвертация на витрине: база ÷ val (курсы ЦБ и аналогов).
  • MODX 3: combo mscurrency_order_price_mode в системных настройках (Ext.form.ComboBox, подписи через mscurrency_mgr_settings).
  • msCurrencyCart / msCurrencyGetOrder: tpl только для обёртки; чанк MS3 — через cartTpl / orderTpl (раньше tpl пробрасывался в ms3_cart и ломал разметку).
  • AJAX-смена валюты: пересчёт HTML корзины и оформления (render[] + object.render, обновление по selector из MS3 / mscConfig.render).
  • Корзина в режиме user: пересчёт позиций на msOnGetCart / msOnGetStatusCart / msOnGetCartCost; fix рекурсии cart->get() в CartDisplayHandler (500 при order_price_mode=user).

Requirements

  • MODX 3.0+, PHP 8.2+, MiniShop3
  • VueTools (админка), pdoTools/Fenom (витрина)
  • mFilter — опционально

Последние обсуждения в сообществе MODX.pro