Вопрос по пересчету валюты в интернет-магагине

#
Вопрос по пересчету валюты в интернет-магагине
Добрый день.
Создается сайт компании с интернет-магазином. Есть необходимость чтобы цены на товары отображались в разных валютах и не пересчитывались автоматически в валюту по умолчанию.
Подскажите пожалуйста как это сделать.
Модератор
#
Re: Вопрос по пересчету валюты в интернет-магагине
johncooper,
Завтра напишу пример
Модератор
#
Re: Вопрос по пересчету валюты в интернет-магагине
1. В блоке товара переименовываем переменную:
<!-- Цена товара -->
               <div style="display: inline">
                  <xsl:choose>
                     <xsl:when test="price != 0">
                        <xsl:variable name="price" select="price"/>
                        <span style="font-size: 11pt">
                           <b>
                              <xsl:value-of select="format-number($price, '###.##0,00', 'my')"/>&#xA0;
                              <!-- Валюта товара -->


Размещаем следующий код (только тот, что выделен жирным):
<!-- Вывод цен в другой валюте -->
               <xsl:variable name="price" select="price"/>

               <xsl:if test="count(/shop/all_currency/shop_currency) > 1 and $price > 0">
                  <p><b>Цена в других валютах:</b>
                  <!-- Выбираем валюты -->
                  <xsl:for-each select="/shop/all_currency/shop_currency">
                     <!-- Выводим валюты кроме текущей -->
                     <xsl:if test="@id != /shop/shop_currency/@id">
                     <br /><xsl:value-of select="format-number($price * shop_currency_coefficient, '###.##0,00', 'my')"/>&#xA0;<xsl:value-of disable-output-escaping="yes" select="shop_currency_name"/>
                     </xsl:if>
                  </xsl:for-each>
                  </p>
               </xsl:if>

               
               <!-- Модификации -->
               <xsl:if test="count(modifications/item) &gt; 0">
                  <b>Модификации:</b>
                  <table cellspacing="0" cellpadding="2">
                     <tr>
                        <td style="border-bottom: 1px solid #dadada;">Название</td>
                        <td style="border-bottom: 1px solid #dadada;">Цена</td>
                     </tr>
                     <xsl:apply-templates select="modifications/item"/>
                  </table>
               </xsl:if>


Пример будет работать с версии 5.5.7
#
Re: Вопрос по пересчету валюты в интернет-магагине
Извините пожалуйста,а  на странице нужно разместить оба этих варианта или один из?

HostCMS писал(а):
Далее из вышеприведенного блока удаляем строку
<xsl:variable name="price" select="price"/>

почему? (не понятно)

HostCMS писал(а):
<xsl:value-of select="format-number($price * shop_currency_coefficient, '###.##0,00', 'my'"/>

Это основная строка пересчета? Что такое '###.##0,00' и 'my'?
Модератор
#
Re: Вопрос по пересчету валюты в интернет-магагине
brightside писал(а):
Извините пожалуйста,а на странице нужно разместить оба этих варианта или один из?

Что Вы вкладывается в понятие "оба варианта"? Выше указан порядок внесения изменений.

brightside писал(а):
почему? (не понятно)

Уже убрал, удалять не нужно.

brightside писал(а):
Это основная строка пересчета? Что такое '###.##0,00' и 'my'?

Это умножение цены в валюте магазина на коэффициент пересчета, который рассчитан для каждой валюты + потом форматируется в строку нужного формата.
#
Re: Вопрос по пересчету валюты в интернет-магагине
HostCMS писал(а):
<xsl:value-of select="format-number($price * shop_currency_coefficient, '###.##0,00', 'my'"/>


Подскажите пожалуйста! У меня в XML вообще нет узла shop_currency_coefficient и в
HostCMS писал(а):
<xsl:for-each select="/shop/all_currency/shop_currency">

узла all_currency тоже нет.

Есть только:
<?xml version="1.0" encoding="windows-1251"?>
<shop id="10" current_group_id="1000702">
<ukraine>1</ukraine>
<course>0.12036</course>
<name>Книги</name>
<description>Книги</description>
<path>/books/</path>
<site_id>10</site_id>
<shop_image_small_max_width>70</shop_image_small_max_width>
<shop_image_big_max_width>600</shop_image_big_max_width>
<shop_image_small_max_height>70</shop_image_small_max_height>
<shop_image_big_max_height>600</shop_image_big_max_height>
<structure_id>94</structure_id>
<shop_country_id>223</shop_country_id>
<shop_currency id="24">
<shop_currency_name>Грн.</shop_currency_name>
<shop_currency_international_name>UAH</shop_currency_international_name>
<shop_currency_value_in_basic_currency>0.120360</shop_currency_value_in_basic_currency>
<shop_currency_is_default>0.120360</shop_currency_is_default>
</shop_currency>
......
<shop_tax_id>0</shop_tax_id>
<price>191.09</price>
<price_tax>191.09</price_tax>
<price_discount>191.09</price_discount>
<item_currency>USD</item_currency>
<currency>Грн.</currency>
.........
</shop>
Модератор
#
Re: Вопрос по пересчету валюты в интернет-магагине
brightside,
HostCMS писал(а):
Пример будет работать с версии 5.5.7
#
Re: Вопрос по пересчету валюты в интернет-магагине
Подскажите а можно сделать так, если указан тип валюты в котором и ввели цену то выводить в этой валюте, а если в другой, то выводить по пересчету.
например для данной позиции товара указано выводить цену в рублях, а введена она в $$ следовательно отображаем ее через пересчет по курсу
а если дано задание выводить для данного товара в $$ и цена указана в $$ то так и выводить
#
Re: Вопрос по пересчету валюты в интернет-магагине
andrei@comprim.net, так вроде же так и есть?
Заказов не беру. Консультирую редко.
#
Re: Вопрос по пересчету валюты в интернет-магагине
Прошу прощения если мой вопрос уже решался - прошарил поиском но не нашёл ответа...

Для магазина устанавливается валюта, например евро, а товары имеют цены в разных валютах (евро, доллары, рубли и т.д.). Вопрос: Как рализовать вывод цены без пересчёта в главную валюту магазина? Т.е. если у товара отмечена валюта отличная от основной валюты магазина (например доллар), то выводить её, а не пересчитывать в евро? В темах форума кроме решения вывода в "других валютах" (т.е. вывод всего списка имеющихся валют) ничего не встретил, а выводить весь список если он большой неподходит.
yestravel
Авторизация