среда, 16 ноября 2011 г.

Joomla Virtuemart 1.1.9 - Как отображать валюту с прайса на сайте без конвертации?

К примеру у вас есть прайс, который содержит валюту в Рублях, Гривнах и Долларах. В Virtuemart 1.1.9 вы можете выбрать одну главную валюту, и в нее будут конвертироваться остальные - либо автоматически по курсу взятом из интернета, либо вручную из статического файла с курсами, который вы создадите. Но это совсем другая история.

Как заставить Virtuemart 1.1.9 отображать именно ту валюту, которую вы добавили, без конвертации.

1. Ищем файл  /administrator/components/com_virtuemart/classes/ps_product.php
Отключаем в этом файле каждую функцию convert(), кроме $url = str_replace( basename( $url ), $GLOBALS['VM_LANG']->convert(basename($url)), $url )


Должно получиться так:
Вместо: $value_notax = $GLOBALS['CURRENCY']->convert( $modifier, $product_currency );Делаем: $value_notax = $modifier;//$GLOBALS['CURRENCY']->convert( $modifier, $product_currency );
Т.е выносим первый параметр и не используем функцию convert() и по аналогии поступаем со всеми вхождениями. Проще делать поиск по слову convert и там уже решать.


2.  Ищем файл /components/com_virtuemart/themes/default/templates/common/price.tpl.php
Находим: echo $CURRENCY_DISPLAY->getFullValue($base_price)?>

Нужно изменить эту строчку таким образом (добавить перед и после):
$tmptmp = $CURRENCY_DISPLAY->symbol;    echo $CURRENCY_DISPLAY->getFullValue($base_price);    $CURRENCY_DISPLAY->symbol = $tmptmp;

Если, к примеру, вы использовали вместо отображения UAH - грн/шт, то вам следует применить такой код, который я применил в каталоге товаров Победит-Инструмент:
$tmptmp = $CURRENCY_DISPLAY->symbol;    if ($price_info['product_currency'] != "UAH")    $CURRENCY_DISPLAY->symbol = $price_info['product_currency'];    echo $CURRENCY_DISPLAY->getFullValue($base_price);    $CURRENCY_DISPLAY->symbol = $tmptmp;

А уже в настройках магазина, при выборе главной валюты укажите отображение грн/шт. Но другие валюты (гривны) будут отображаться в виде RUB и USD. Но этот код можно доделать по тому же принципу и для других валют (к примеру чтобы вместо RUB отображалось руб. а вместо USD отображалось дол.).

Комментариев нет:

Отправить комментарий