Демо Демо-магазин MiniShop3: 14 платных дополнений ibochkarev — витрина, отзывы, checkout, оплата, аналитика
ibochkarev.su
К основному содержимому

В каталог

msCurrency

Стенд msCurrency

QA-страница мультивалютных цен, переключателя и GeoIP.

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_modeuser (user — корзина в валюте покупателя)
mscurrency_selected_currency_default0 (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 26price=68800
currency_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.codeRUB · msmc: RUB
msc.val1 (делитель для витрины)
msc.id1
Символы
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.

RUB ₽68 800
USD 956.78
EUR 829.17

5. Каталог msProducts

Чанк chunks/demo.msc_catalog_row.tpl — база по msc.base_id и цена сессии через msCurrencyPrice (format=1).

Умные часы Nikon Pro
ID 22 · база MS3: 76 004 · валюта сессии: 76 004
Куртка Canon Ultra
ID 23 · база MS3: 109 729 · валюта сессии: 109 729
Кроссовки Lenovo Series S
ID 24 · база MS3: 50 875 · валюта сессии: 50 875
Кофемашина Philips Prime
ID 25 · база MS3: 81 690 · валюта сессии: 81 690
Телевизор Xiaomi Plus 50"
ID 26 · база MS3: 68 800 · валюта сессии: 68 800
Кресло Bose Classic
ID 27 · база MS3: 76 110 · валюта сессии: 76 110
Смартфон Samsung Advanced 512GB
ID 28 · база MS3: 82 124 · валюта сессии: 82 124
Телевизор Bosch Air 24"
ID 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 на дефолт / базовую

Журнал браузерных проверок

msCurrency QA log