QA-стенд msCurrency.
Товар: 26
· карточка
· каталог: 2
· валюта §3: сессия.
?msc_debug=0 — скрыть журнал.
0. Окружение и настройки
Плейсхолдеры msc.* — плагин mscurrency_frontend.
Цена на витрине = база ÷ msc.val.
Snippet msCurrency | Найден |
|---|---|
Snippet msCurrencyPrice | Найден |
Snippet msCurrencyPrices | Найден |
Snippet msCurrencyCart | Найден |
Snippet msCurrencyGetOrder | Найден |
mscurrency_order_price_mode | user (user — корзина в валюте покупателя) |
mscurrency_selected_currency_default | 0 (0 = базовая) |
mscurrency_payment_currency_option | Пусто — код валюты в опцию платёжки не пишется |
ms3_price_format | [2, ".", " "] |
ms3_price_format_no_zeros | Вкл. |
mscurrency_frontend_css | /assets/components/mscurrency/css/web/default.min.css |
mscurrency_frontend_js | /assets/components/mscurrency/js/web/default.min.js |
mscurrency_ajax_switch | Вкл. — смена валюты без reload; [data-msc-price] и mscConfig.render (например #demo-cart) |
mscurrency_geoip_enabled | Вкл. — плагин mscurrency_detect |
mscurrency_geoip_respect_manual | Вкл. — GeoIP не перезаписывает ручной выбор |
Плагин mscurrency_detect | Активен |
Плагин mscurrency_frontend | Активен |
Плагин mscurrency_cart_display | Активен Нужен при mscurrency_order_price_mode=user для пересчёта корзины. |
Товар MS3 26 | price=68800currency_id=0, msc_price=0, msc_old_price=0В MGR: секция «Валюта»; после сохранения price пересчитывается из msc_price. |
window.mscConfig — см. консоль после загрузки
1. Переключатель — список
Клик → POST web/currency/set. Чанк tpl.msCurrency.
1b. Переключатель — select
Чанк tpl.msCurrencySelect, событие change.
1c. Переключатель — compact
compact=1 — кнопка «···» переключает код ↔ символ без reload.
2. Плейсхолдеры msc.* / msmc.*
msc.code | RUB · msmc: RUB |
|---|---|
msc.val | 1 (делитель для витрины) |
msc.id | 1 |
| Символы | ₽ … |
price_rounding валюты | none (active=1) — none / round / ceil / floor / to_99. |
3. Сниппет msCurrencyPrice
При AJAX и pid > 0 — обёртка data-msc-price.
База из поля price товара (или ?msc_price=).
68 800
Число:
68800
4. Таблица цен msCurrencyPrices
Сравнение одной и той же позиции во всех валютах магазина (код валюты + символ + сумма).
Чанк demo.msc_prices_table.tpl, товар 26.
5. Каталог msProducts
Чанк chunks/demo.msc_catalog_row.tpl — база по msc.base_id и цена сессии через msCurrencyPrice (format=1).
22
· база MS3: 76 004
· валюта сессии: 76 004
23
· база MS3: 109 729
· валюта сессии: 109 729
24
· база MS3: 50 875
· валюта сессии: 50 875
25
· база MS3: 81 690
· валюта сессии: 81 690
26
· база MS3: 68 800
· валюта сессии: 68 800
27
· база MS3: 76 110
· валюта сессии: 76 110
28
· база MS3: 82 124
· валюта сессии: 82 124
29
· база MS3: 54 468
· валюта сессии: 54 468
6. Корзина msCurrencyCart
Обёртка над ms3_cart / msCart: cartTpl — чанк строк корзины MS3,
tpl — только , selector — на внешнем контейнере ниже.
В строках — price_formatted / cost_formatted, не msCurrencyPrice.
Режим user: base — базовая валюта; user — плагин mscurrency_cart_display на msOnGetCart.
user,
валюта сессии RUB
₽
.
7. Заказ msCurrencyGetOrder
Обёртка над ms3_get_order с теми же параметрами (tpl, selector, orderTpl).
На странице успеха передайте id / msorder. Снимок валюты: properties.msc / properties.msmc.
или обёртка tpl с и .
8. Connector и события
/assets/components/mscurrency/connector.php — контекст web.
События: mscOnToggleCurrency, mscOnGetPrice, mscOnBeforeUpdateProductPrice.
9. Валидация web/currency/set
Невалидный id → success: false, сессия не меняется.
Ответ web/currency/set появится здесь…
10. GeoIP — mscurrency_detect
msc_geo_reset=1 очищает сессию,
msc_geo_country=DE имитирует заголовок CDN.
| Состояние сессии | msc_currency_id=1 · msc_currency_manual=0 · плейсхолдер msc.id=1 / msc.code=RUB |
|---|---|
| Источники страны | QA msc_geo_country: —HTTP_CF_IPCOUNTRY: —GEOIP_COUNTRY_CODE: —Эффективная страна: — |
| Ожидаемое поведение | respect_manual + сессия — GeoIP на этой загрузке пропущен (сброс: ссылка «reset» ниже) |
| Кейс | Шаги | Ожидание |
|---|---|---|
| Базовый детект | geoip_enabled=1, reset + msc_geo_country=DE |
msc.code=EUR, msc_currency_manual=0 |
| Уважение ручного выбора | reset + DE → переключить валюту в §1 → «DE без reset» | При respect_manual=1 валюта не меняется на EUR |
| Неизвестная страна | reset + msc_geo_country=XX |
Fallback на дефолт / базовую |