new

msMultiCurrency

Мультивалютность для miniShop2
Автор дополнения
Prihod
Пакетов
11
Закачек
1 835
Автор дополнения
Пакетов
11
Закачек
1 835
Версия 1.0.0-beta
Дата выпуска 10.05.2018
Загрузки 5
Просмотры 248
Внимание, этот компонент требует версию PHP 5.5 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.

Компонент добавляет мультивалютность в miniShop2, а также позволяет привязывать цену отдельного товара к одной из
валют.


Из коробки доступны следующие поставщики котировок валют:

  • Центральный банк Российской Федерации (по умолчанию );
  • Центральный банк Украины;
  • Национальный банк Республики Беларусь;
  • Национальный банк Республики Казахстан.


Для каждой котировки можно указать свой коэффициент, на которую она будет умножаться. Есть возможность обновления
котировок через крон.


Видео-обзор




Использование



После установки компонента в меню miniShop2 появится подменю “Валюты”.



В данном разделе вы можете выбрать/добавить своего поставщика котировок валют, а также настроить или добавить свои валюты.
В списке валют нужно указать основную валюту (валюта в которой указаны цены товаров), по умолчанию это российский рубль.


Для того, чтобы привязать цену конкретного товара к другой валюте, необходимо в карточки товара выбрать ее из выпадающего списка “Валюта”, который у вас там появится после установки данного компонента.



Цена в заказе всегда сохраняется в базовой валюте.


Для того чтобы цена в корзине после оформления заказа и в письме выводилась в выбранной валюте пользователя, необходимо в чанках соответствующих сниппетов преобразовывать цену с помощью сниппета msMultiCurrencyPrice (параметр pid указывать не нужно, даже если есть товар с привязанной валютой).


Информация, о выбранной валюте пользователем, хранится в следующих плейсхолдерах:

  • [[!+msmc.name]] — название валюты
  • [[!+msmc.code]] — код валюты
  • [[!+msmc.symbol_left]] -символ слева
  • [[!+msmc.symbol_right]] — символ справа
  • [[!+msmc.val]] — конечное значение котировки валюты ( котировка умноженная на коэффициент).


Сниппеты



msMultiCurrency — сниппет для вывода списка валют.
Параметры:
  1. tpl — Чанк оформления для вывода результата работы сниппета.
  2. frontendCss — Стиль фронтенда. По умолчанию [[+assetsUrl]]css/web/default.min.css
  3. frontendJs — Скрипт фронтенда. По умолчанию [[+assetsUrl]]js/web/default.min.js

Вы можете увидеть все доступные плейсхолдеры валют просто не указывая чанк оформления:

[[!msMultiCurrency?
    tpl=``
]]



msMultiCurrencyPrice — сниппет для вывода цены в определенной валюте.
Параметры:

  1. price — цена
  2. pid — ID товара (следует использовать только в том случаи, если у вас есть товар, цена которого привязана к одной из валют)
  3. cid — ID валюты в которой нужно вернуть цену. По умолчанию используется валюта, выбранная пользователем.

Пример использования:

Классический вариант

[[!msMultiCurrencyPrice? &price=`Цена товара`]]  [[!+msmc.symbol_right]]

Для шаблонизатора Fenom

{'!msMultiCurrencyPrice' | snippet : [
    'price' => `Цена товара,
]}

{$_modx->getPlaceholder('msmc.symbol_right')}



msMultiCurrencyCart — сниппет для вывода корзины покупателя. Данный сниппет по параметрам полностью идентичен сниппету msCart и всего лишь обеспечивает корректный вывод цены товара, которая привязана к одной из валют, и поэтому его целесообразно использовать вместо msCart только в том случаи, если у вас есть такой товар.


Важно! Если вы используете дополнения, которые каким-то образом манипулируют ценой, то убедитесь, что они корректно работают с msMultiCurrency, особенно если у вас будет товар, привязанный к одной из валют.


Обновление котировок по крон



Для обновления котировок по крон необходимо в него добавить задание на выполнения скрипта core/components/msmulticurrency/cron/course.php
Очень часто в день дергать этот скрипт не стоит, т.к. некоторые поставщики котировок лимитируют количество обращений к API в сутки да и котировка, как правило, обновляется 1-2 раза в сутки.


Разработка



Создание своего поставщика валют


Для создания своего поставщика валют необходимо поместить в директорию core/components/msmulticurrency/providers php файл с вашим классом, являющимся наследников базового класса поставщика MsMCProvider и определить его методы getCodes, getCourse и run по аналогии с уже имеющимися поставщиками. После всего этого добавьте информацию о вашем поставщике в разделе поставщиков



Системные события


msmcOnToggleCurrency — изменение пользователем валюты, содержит следующие переменные:

  1. $currency — массив данных выбранной валюты


msmcOnGetPrice — конвертация цены, содержит следующие переменные:

  1. $price — цена
  2. $newPrice — цена после конвертации
  3. $productId — ID товара
  4. $currencyId — ID валюты
  5. $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);

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