Валюта отображения товаров Tienda - магазин для Joomla!

Я так подозреваю что возможность отображать цены во фронтенде в валюте отличной от той что в базе будет в последующих версиях, но все равно опыт интересен, и я по просьбе lmd и по своему хотению решил немного покопаться в коде. Вот что я нарыл... Посмотрев шаблоны вывода цены, обнаружил что за это отвечает метод dispayPriceWithTax класса TiendaHelperProduct его можно найти по адресу administrator/components/com_tienda/helpers/product.php Выглядит он примерно так:

function dispayPriceWithTax($price='0', $tax='0', $show='0')
{
  $txt = '';
  if($show && $tax)
  {
    if ($show == '2')
    {
      $txt .= TiendaHelperBase::currency($price + $tax);
    }
    else
    {
      $txt .= TiendaHelperBase::currency($price);
      $txt .= sprintf( JText::_('INCLUDE_TAX'), TiendaHelperBase::currency($tax));
    }
  }
  else
  {
    $txt .= TiendaHelperBase::currency($price);
  }

  return $txt;
}

Как видим в любом случае (с налогами или без них) цену для нас добывает метод TiendaHelperBase::currency. Да прибудет с нами священный поиск... :) Находим его в: administrator/components/co_tienda/helpers/_base.php И вот так он выглядит:

function currency($amount, $currency='', $options='')
{
  $currency_helper =& TiendaHelperBase::getInstance( 'Currency' );
  $amount = $currency_helper->_($amount, $currency, $options);
  return $amount;
}

Второй параметр $currency у нас пуст. По умолчанию дадим ему id валюты в которой мы хотим отображать цены на сайте. Это значение мы возьмем из таблицы валют tienda_currencies поле currency_id. У меня валютой по умолчанию будет UAH и ее id = 5. Для меня код будет следующим:

function currency($amount, $currency='5', $options='')
{
  $currency_helper =& TiendaHelperBase::getInstance( 'Currency' );
  $amount = $currency_helper->_($amount, $currency, $options);
  return $amount;
}

Вот с этих пор валюта отображения по умолчанию у нас есть. Но в модуле выбора валюты (если Вы им пользуетесь) при том что отображение в гривнах валюта базы данных по умолчанию т.е. USD, что смотрится не совсем красиво. Я предлагаю, дабы не заморачиваться с кодом, просто присвоить валютам что находятся впереди нашей валюты по умолчанию присвоить более высокие id. В моем случае у валюты USD id=1. Ей, через phpmyadmin, присваеваем id, например 8. Вуаля!

Comments