Чтобы скрыть цену у товаров, которых нет в наличии, и показать, например, надпись "Нет в наличии" нужно:

 

 

 

Для страницы категории (vm3)

В файле \components\com_virtuemart\sublayouts\products.php замените код вывода цены

<?php //echo $rowsHeight[$row]['price'] ?>
<div class="vm3pr-<?php echo $rowsHeight[$row]['price'] ?>"> <?php
	echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$product,'currency'=>$currency)); ?>
	<div class="clear"></div>
</div>

на

<?php if (($product->product_in_stock - $product->product_ordered) < 1) {
		echo 'Нет в наличии';
		}
?>

<?php if (($product->product_in_stock - $product->product_ordered) > 1) { ?>
<?php //echo $rowsHeight[$row]['price'] ?>
<div class="vm3pr-<?php echo $rowsHeight[$row]['price'] ?>"> <?php
	echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$product,'currency'=>$currency)); ?>
	<div class="clear"></div>
</div>
<?php } ?>

Для карточки товара (vm3)

Замените код вывода цены в файле \components\com_virtuemart\views\productdetails\tmpl\default.php

echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$this->product,'currency'=>$this->currency));

на

if (($this->product->product_in_stock - $this->product->product_ordered) < 1) {
		echo 'Нет в наличии';
	}
else {
echo shopFunctionsF::renderVmSubLayout('prices',array('product'=>$this->product,'currency'=>$this->currency));
}