Интересно почитать… Блог в котором есть много интересной информации…

26 февраля 2016

Как конвертировать валюту в VirtuaeMart 1.x

Категория: программирование — dmitriano @ 19:31

Три года думал как в VirtuaeMart 1.x конвертировать валюту, оказалось что всё очень просто. VirtuaeMart берет курсы валют на сайте ЕЦБ по адресу http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml (файл administrator/components/com_virtuemart/classes/currency/convertECB.php), и в PHP коде функция конвертации выглядит следующим образом (файл libraries/user/product_parser.php):

function FormatProductPrice($price, $product_currency)
{
    global $CURRENCY_DISPLAY;

    $converted_price = $GLOBALS['CURRENCY']->convert($price, $product_currency);

    return $CURRENCY_DISPLAY->getFullValue($converted_price);
}

чтобы product_currency бралось из базы при листинге продуктов надо добавить соответствующее поле в запрос в файле administrator/components/com_virtuemart/html/shop_browse_queries.php:

// These are the names of all fields we fetch data from
$fieldnames = ... , `#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`, `attribute`, `product_currency`";

и в administrator/components/com_virtuemart/html/shop.browse.php добавить сточку

$products[$i]['product_currency'] = $db_browse->f('product_currency');

для листинга в components/com_virtuemart/themes/vm_mynxx/templates/browse/browse_3.php получается следующий код:

foreach($attributes as $attribute)
{
        //echo $attribute['title'];

        foreach($attribute['options_list'] as $options_item)
        {
                $attr_lable = str_replace("_", " ", $options_item['base_var']);

                if (isset($options_item['display_price']))
                {
                        echo $attr_lable . ' =' . FormatProductPrice($options_item['display_price'], $product_currency) .'<br>';
                }
                else
                {
                        //echo "Vika entered a wrond attribute price.";
                        echo $attr_lable . '<br>';
                }
        }
}

чтобы цена показывалась в заголовке документа нужно в файле administrator/components/com_virtuemart/html/shop.product_details.php добавить следующее:

//$page_title = $product_name;

require_once (JPATH_LIBRARIES.DS.'user'.DS.'product_parser.php');

$page_title = GetProductTitle($product_id);

по идее надо бы округлять цену через PHP round().

Линии 3D/Шарики 3D

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

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru