- Проверено Modstore
- Бесплатные будущие обновления
- Работа на тестовом и публичном домене
- 12 месяцев тех. поддержки от автора
Компонент добавляет мультивалютность в miniShop2, а также позволяет привязывать цену отдельного товара к одной из
валют.
Из коробки доступны следующие поставщики котировок валют:
- Центральный банк Российской Федерации (по умолчанию );
- Центральный банк Украины;
- Национальный банк Республики Беларусь;
- Национальный банк Республики Казахстан.
Для каждой котировки можно указать свой коэффициент, на которую она будет умножаться. Есть возможность обновления
котировок через крон.
Видео-обзор
Использование
После установки компонента в меню miniShop2 появится подменю “Валюты”.

В данном разделе вы можете выбрать/добавить своего поставщика котировок валют, а также настроить или добавить свои валюты.
В списке валют нужно указать основную валюту (валюта в которой указаны цены товаров), по умолчанию это российский рубль.
Для того, чтобы привязать цену конкретного товара к другой валюте, необходимо в карточки товара выбрать ее из выпадающего списка “Валюта” и указать стоимость товара в выбранной валюте.
Цена в заказе всегда сохраняется в базовой валюте.
Для того чтобы цена в корзине после оформления заказа и в письме выводилась в выбранной валюте пользователя, необходимо в чанках соответствующих сниппетов преобразовывать цену с помощью сниппета msMultiCurrencyPrice (параметр pid указывать не нужно, даже если есть товар с привязанной валютой), а также в системных настройках /manager/index.php?a=system/settings дополнения включить опцию “Цена в корзине в валюте пользователя”
Информация, о выбранной валюте пользователем, хранится в следующих плейсхолдерах:
- [[!+msmc.name]] — название валюты
- [[!+msmc.code]] — код валюты
- [[!+msmc.symbol_left]] -символ слева
- [[!+msmc.symbol_right]] — символ справа
- [[!+msmc.val]] — конечное значение котировки валюты ( котировка умноженная на коэффициент).
Сниппеты
msMultiCurrency — сниппет для вывода списка валют.
Параметры:
- tpl — Чанк оформления для вывода результата работы сниппета.
- frontendCss — Стиль фронтенда. По умолчанию [[+assetsUrl]]css/web/default.min.css
- frontendJs — Скрипт фронтенда. По умолчанию [[+assetsUrl]]js/web/default.min.js
Вы можете увидеть все доступные плейсхолдеры валют просто не указывая чанк оформления:
[[!msMultiCurrency?
tpl=``
]]
msMultiCurrencyPrice — сниппет для вывода цены в определенной валюте.
Параметры:
- price — цена
- cid — ID валюты в которой нужно вернуть цену. По умолчанию используется валюта, выбранная пользователем.
Пример использования:
Классический вариант
[[!msMultiCurrencyPrice? &price=`Цена товара`]] [[!+msmc.symbol_right]]
Для шаблонизатора Fenom
{'!msMultiCurrencyPrice' | snippet : [
'price' => `Цена товара,
]}
{$_modx->getPlaceholder('msmc.symbol_right')}
msMultiCurrencyCart — сниппет для вывода корзины покупателя. Данный сниппет по параметрам полностью идентичен сниппету msCart и всего лишь обеспечивает корректный вывод цены товара, которая привязана к одной из валют, и поэтому его целесообразно использовать вместо msCart только в том случаи, если у вас есть такой товар.
Важно! Если вы используете дополнения, которые каким-то образом манипулируют ценой, то убедитесь, что они корректно работают с msMultiCurrency, особенно если у вас будет товар, привязанный к одной из валют.
Вывод цен и валюты в категории товаров
Для того что бы поля “Валюта”, “Цена в выбранной валюте” или “Старая цена в выбранной валюте” вывести в категории товара, необходимо в системных настройках minishop2 для опцию “Поля таблицы товаров” (ключ ms2_category_grid_fields) добавить название нужных полей.
- currency_id — название валюты
- msmc_price — цена в выбранной валюте
- msmc_old_price — старая цена в выбранной валюте
Пример
id,menuindex,pagetitle,article,price,msmc_price,currency_id,thumb,new,favorite,popular
Обновление котировок по крон
Для обновления котировок по крон необходимо в него добавить задание на выполнения скрипта core/components/msmulticurrency/cron/course.php
Очень часто в день дергать этот скрипт не стоит, т.к. некоторые поставщики котировок лимитируют количество обращений к API в сутки да и котировка, как правило, обновляется 1-2 раза в сутки.
mFilter2
Для отображение в слайдере цены в выбранной валюте следует выполнить следующие действия:
- скопировать файл в директорию /core/components/msearch2/custom/filters/ (данный шаг можно пропустить если mSearch2 был установлен до msMultiCurrency)
- в системных настройках /manager/?a=system/settings для ключа mse2_filters_handler_class указать msmcFiltersHandler
- заменить для слайдера цены фильтр number на price
- очистить кэш modx.
Пример вызова сниппета mFilter2
[[!mFilter2?
&class=`msProduct`
&element=`msProducts`
&parents=`0`
&filters=`ms|price:price`
&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
]]
Важно! Т.к на данный момент mFilter2 не позволяет управлять своим кэшем то он будет отключен.
Разработка
Создание своего поставщика валют
Для создания своего поставщика валют необходимо поместить в директорию core/components/msmulticurrency/providers php файл с вашим классом, являющимся наследников базового класса поставщика MsMCProvider и определить его методы getCodes, getCourse и run по аналогии с уже имеющимися поставщиками. После всего этого добавьте информацию о вашем поставщике в разделе поставщиков
Системные события
msmcOnToggleCurrency — изменение пользователем валюты, содержит следующие переменные:
- $currency — массив данных выбранной валюты
msmcOnGetPrice — конвертация цены, содержит следующие переменные:
- $price — цена
- $newPrice — цена после конвертации
- $currencyId — ID валюты
- $course — коэффициент, на который может делиться цена
Полезные функции
getPrice — конвертация цены
/**
* @param float $price - Цена
* @param int $productId - ID товара (проверяется, привязан ли товар к одной из валют). По умолчанию 0
* @param int $currencyId - ID Валюты, в которой нужно вернуть цену. По умолчанию 0
* @param float $course - Коэффициент, на который следует поделить цену (если его указать, то функция сразу вернет результат деления). По умолчанию 0
* @param bool $isFormat - Выводить цену отформатированной согласно параметру miniShop2 ms2_price_format. По умолчанию true
*/
public function getPrice($price = 0, $productId = 0, $currencyId = 0, $course = 0.0, $isFormat = true);
Пример использования функции getPrice в своем скрипте
/** @var MsMC $msmc */
$msmc = $modx->getService('msmulticurrency', 'MsMC');
$msmc->getPrice($price, $pid, $cid, $course, $isFormat);
msMultiCurrency 1.0.4
- Добавлено: Вывод полей: валюта, цена и старая цена в категории товара
- Добавлено: Пересчет цены при импорте с помощью msImportExport
msMultiCurrency 1.0.3
- Добавлено: Наборы значений валюты ВАЖНО! Перед обновлением не забывайте сделать бэкап базы данных. После обновления необходимо очистить кэш браузера
msMultiCurrency 1.0.2
- Изменено: привязка валюты к продукту
msMultiCurrency 1.0.1
- Исправлено: Расчет общей стоимости в корзине. Требуется минимальная версия miniShop2 >= 2.4.13 pl
Последние обсуждения в сообществе MODX.pro