TCSE

Как вывести цену на сайте в рублях если исходная в евро через js

Используя плагин курса валют ЦБРФ хотелось бы не просто выводить сами валюты, но и использовать их для автоматической конвертации цен.

Например товары на сайте в евро, а законодательство требует отображать все цены в российских рублях. Именно такое требование у Яндекс Маркета при генерации турбо-страниц для интернет-магазинов.

К примеру наша статья по формату YML позволяет собрать свой шаблон импорта товаров в Яндекс Маркет. И вот если ваши цены в долларах или евро - то проверка списка товаров на стороне сайта выявит "проблему" цены не указаны в национальной валюте.
Простой JS скрипт автоматического пересчета цены из значений курса ЦБРФ в Рубли позволит решить подобную задачу.



Готовый скрипт цены в рублях:




<script>
window.onload = function() {
    let cursPrice = document.getElementById('curs-price').innerHTML; // обьявляю переменную для цены в евро
    let cursEuro = document.getElementById('curs-euro').innerHTML; // обьявляю переменную для курса евро на сегодня из плагина {THEME}/assets/cbr-exrate/exrate.tpl
    let localePrice = cursPrice * cursEuro; // перемножаем объявленные переменные
    let localeCost = (localePrice).toLocaleString('ru-RU', {
        style: 'currency',
        currency: "RUB"
    })
    document.getElementById('curs-localcost').innerHTML = localeCost; // выводим строку результата
}
</script>


Теперь подробно, по шагам



1. У вас должен быть установлен Плагин cbr-exrate - Курсы валют для DLE
Открываем шаблон формирования списка валют {THEME}/assets/cbr-exrate/exrate.tpl

И для нужной валюты добавляем id например вот так id="curs-euro"
EUR ЦБ: <b id="curs-euro">{euro}</b>


2. В шаблоне вывода стоимости вашего товара на страницах fullstory.tpl так же добавляем id для тега вывода цены.
Например вот так id="curs-price"
<p>
      Исходная цена: <span id="curs-price">[xfvalue_xml2tpl_price]</span> [xfvalue_xml2tpl_currencyid] <sup class="text-danger">*</sup>
</p>
<p class="small">
      * - оплата в рублях по курсу ЦБ России
</p>


Где [xfvalue_xml2tpl_price] это тег дополнительного поля с ценой на товар.

3. Добавляем html код для вывода полученной цены (курс валюты умноженный на цену в валюте)

ЦЕНА:  <span id="curs-localcost"></span>



Готовый результат:

Как вывести цену на сайте в рублях если исходная в евро через js



Пример кода в fullstory.tpl целиком
<div class="py-3">
	ЦЕНА:  <span id="curs-localcost"></span> 
	<p>
		Исходная цена: <span id="curs-price">[xfvalue_xml2tpl_price]</span> [xfvalue_xml2tpl_currencyid] <sup class="text-danger">*</sup>
	</p>
	<p class="small">
		* - оплата в рублях по курсу ЦБ России
	</p>
</div>
<script>
window.onload = function() {
    let cursPrice = document.getElementById('curs-price').innerHTML; // обьявляю переменную для цены в евро
    let cursEuro = document.getElementById('curs-euro').innerHTML; // обьявляю переменную для курса евро на сегодня из плагина {THEME}/assets/cbr-exrate/exrate.tpl
    let localePrice = cursPrice * cursEuro; // перемножаем объявленные переменные
    let localeCost = (localePrice).toLocaleString('ru-RU', {
        style: 'currency',
        currency: "RUB"
    })
    document.getElementById('curs-localcost').innerHTML = localeCost; // выводим строку результата
}
</script>