Использую Virtuemart на Joomla в качестве ознакомления с продукцией, без использования корзины. Нужно выводить цены в двух валютах, но без дублирования, т.е. валюта магазина в долларах, я добавляю товар с базисной ценой в рублях в выпадающем списке, на сайте должен вывести символ или символьное представление рубля, если в долларах, то ничего предпринимать не нужно (возможно добавиться еще одна валюта). Решение хочу сделать универсальное. По умолчанию Virtuemart конвертирует валюту в указанную в настройках магазина и выводит символ доллара. Вывод базовой цены сделал методом замены строки по пути:
каталог_joomla/templates/template/html/com_virtuemart/sublayouts/prices.php
//начальная строка
echo $currency->createPriceDiv ('salesPrice', '', $product->prices);
//новая строка
echo $currency->createPriceDiv ('salesPrice', '', $product->prices['costPrice']);
Как я понял, за данные валюты отвечает файл по пути:
каталог_Joomla/administrator/components/com_virtuemart/helpers/currencydisplay.php
В файле я изменил конструктор класса на
private function __construct ($productId = 0){
if(empty($productId)) $productId = 5;
$product_model = VmModel::getModel('product');
$productCurrency = $product_model->getProductCurrency( $productId );
if($productCurrency){
$this->_productCurrency = $productCurrency->product_currency;
$this->_productCurrency_numeric = $productCurrency->currency_numeric;
}
и функцию getInstance на
static public function getInstance($currencyId=0, $productId=0){
$h = $currencyId.'.'.$productId;
if (!isset(self::$_instance[$h])) {
self::$_instance[$h] = new CurrencyDisplay($productId);
if(empty($currencyId)){
$app = JFactory::getApplication();
if($app->isSite()){
self::$_instance[$h]->_currency_id = $app->getUserStateFromRequest( "virtuemart_currency_id", 'virtuemart_currency_id',vRequest::getInt('virtuemart_currency_id', 0));
}
if(empty(self::$_instance[$h]->_currency_id)){
self::$_instance[$h]->_currency_id = self::$_instance[$h]->_productCurrency;
}
} else {
self::$_instance[$h]->_currency_id = $currencyId;
}
$curM = VmModel::getModel('currency');
$style = $curM->getData((int)self::$_instance[$h]->_currency_id);
в модели VM 'product' добавил запрос к базе данных
//Get Product Currency
static $_productCurrencies;
static function getProductCurrency ($_productId) {
if(!isset(self::$_productCurrencies)){
$db = JFactory::getDBO ();
$q = 'SELECT * FROM `#__virtuemart_currencies` AS c
LEFT JOIN `#__virtuemart_product_prices` AS v ON c.virtuemart_currency_id = v.product_currency
WHERE v.virtuemart_product_id = "' . (int)$_productId . '"';
$db->setQuery ($q);
self::$_productCurrencies = $db->loadObject ();
}
return self::$_productCurrencies;
}
видимо изначально в конструкторе он не определяет $productId.
Помогите разобраться или быть может подскажите решение проблемы. Мне нужно иметь доступ не к валюте магазина, а именно к базисной валюте из которой происходит конвертация. Joomla 3.8, Virtuemart 3 версии.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Делаю парсер цен и другой инфы с сайтаВот ссылка на всю эту инфу: https://loot
Делаю парсер цен с сайтаУже задавал вопрос, мне подсказали