Fiz assim, mas já estou melhorando isso, ok? Seria apenas um primeiro passo.
A versão do Open Cart que usei para fazer esse esquema é a 1.5.1. Mas certamente funciona nas demais com alguns poucos ajustes.
O resultado desta mudança faz com que o produto sem preço, ou inferior a R$ 0,01 mostre no lugar do valor, um texto. E só.
Faça backup do product.tpl (catalog/view/theme/default/template/product/product.tpl).
Procure a seguinte instrução neste arquivo (product.tpl):
Código: Selecionar todos<?php if (!$special) { ?>
<?php echo $price; ?>
<?php } else { ?>
E substitua por esta:
Código: Selecionar todos<?php
if (!$special) {
$valorlimpo= preg_replace("/[^0-9]/i", "", $price);//limpa variável com valor deixando apenas números
if($valorlimpo<1){$price = "Consulte-nos!";}//se o valorlimpo for menor que 1 (centavo) atribui um texto no lugar do valor, no caso "Consulte-nos!"
echo $price;
} else { ?>
Vejam que é uma forma bem simples e que não soluciona muitos dos problemas, por exemplo: "comprar" continua aparecendo (e o cliente irá comprar por R$ 0,00),