Exibição do preço do produto
O método getPriceHtml()
é definido na classe de bloco Mage_Catalog_Block_Product_Abstract
.
O método usa um representante de preço que depende do tipo de produto:
$type_id = $product->getTypeId(); // e.g. simple, configurable, bundle, grouped, ...
$this->_preparePriceRenderer($type_id)
O representante de preço é um bloco com um modelo associado. Ambos dependem do tipo de produto.
Se não houver nenhum bloco ou modelo definido para o tipo de produto especificado, o padrão será o catalog/product_price
bloco e o catalog/product/price.phtml
modelo.
Onde estão definidos os representantes e modelos de preços para os tipos de produtos?
Os blocos de preços e renderizadores geralmente são especificados usando XML de layout, portanto, os módulos que adicionam novos tipos de produtos também podem facilmente adicionar seus próprios renderizadores. Por exemplo. o produto incluído adiciona seu representante de preços da seguinte forma no bundle.xml
arquivo de layout:
<default>
<reference name="catalog_product_price_template">
<action method="addPriceBlockType">
<type>bundle</type>
<block>bundle/catalog_product_price</block>
<template>bundle/catalog/product/price.phtml</template>
</action>
</reference>
</default>
Modelos ou representantes de preços personalizados
Usando o mesmo mecanismo, também é possível substituir os renderizadores padrão. Se você quiser apenas alterar o modelo e manter o tipo de bloco de preço padrão, basta chamar addPriceBlockType
o arquivo de layout com o bloco padrão (veja acima) e seu modelo.
Renderizando o bloco de preços
O código para renderizar o bloco de preços se parece com o seguinte:
$this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
As variáveis $displayMinimalPrice
e $idSuffix
são argumentos opcionais para o getPriceHtml
método.
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
O $idSuffix
é usado no modelo de preço para concluir o ID CSS da <span>
tag em torno do preço real, por exemplo:
<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">