переделал маленько модуль так чтобы цены выводил используя стандартный механизм Virtuemat.
Не надо будет заморачиваться с округлением и со скидками. Все будет отображаться так как укажите в настиройках VM.
для этого используем функцию show_price из ps_product.php
В файле mod_virtuemart_universal\helper.php Добавил строчки
<?php
/**
* @author Beliyadm @license GNU/GPL
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
//ЗДЕСЬ начинается вставка
global $mosConfig_absolute_path;
// Load the VirtueMart main parse code
if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}
require_once ( CLASSPATH. 'ps_product.php');
$ps_product = new ps_product;
//Здесь заканчивается вставка
class modVirtUniversalHelper
Потом в файле mod_virtuemart_universal\tmpl\default.php
для вывода цены используем код
<?php echo $ps_product->show_price( $item->pid, true ); ?>
вставляем в любом месте внутри цикла например так
<?php foreach ($list as $item) : ?>
<div class="mod_vm_universal">
<?php if ($item->discount == '1') { ?>
<img src="<?php echo JURI::base(); ?>modules/mod_virtuemart_universal/files/ico_discount.png" class="discount" alt="Скидка на продукт!" />
<?php } else {} ?>
<span class="mod_vm_title"><?php echo $item->pname; ?></span>
<a href="<?php echo $item->link; ?>" title="<?php echo $item->pname; ?> - <?php echo $item->intro; ?>" class="mod_vm_link">
<img src="<?php echo $item->pimage; ?>" alt="<?php echo $item->pname; ?> - <?php echo $item->intro; ?>" />
</a>
<?php echo $item->intro; ?>
<a href="<?php echo $item->link; ?>" title="<?php echo $item->pname; ?> - <?php echo $item->intro; ?>" class="mod_vm_readmore">Подробнее</a>
<span class="mod_vm_price">Цена: <?php echo $item->price; ?> <?php echo $item->currency; ?></span>
//Для сравнения вставляю вывод нашей цены
<?php echo $ps_product->show_price( $item->pid, true ); ?>
</div>
<?php endforeach; ?>
Я в PHP вообще не силен поэтому не знаю корретно ли
как я создаю объект $ps_product = new ps_product; Удаляется ли он потом.
Строчки эти я позаимствовал из стандарного модуля для вывода продуктов.
Но цена выводится нормально. С правильными разделителями, с НДС или без в зависимости от настроек и описанием валюты.
Был бы признателен кто бы по уму переделал используя данную наводку по выводу цены
А функция $ps_product->show_price выводит цену по шаблону определяемому в файле com_virtuemart\themes\s5_shopper_frenzy\templates\common\price.tpl.php
где s5_shopper_frenzy ваша тема для VM
Да и надо наверное переделать файл helper.php чтобы выводил товары без цены (тогда вместо цены будет показываться строчка "Позвоните чтобы уточнить цену")
Слегка увеличивается кол-во запросов, но зато вывод цены правильный в зависимости от настроек.
Но кол-во запросов меньше чем при стандартном выводе