Visualizzazione del prezzo del prodotto
Il metodo getPriceHtml()
è definito nella classe di blocco Mage_Catalog_Block_Product_Abstract
.
Il metodo utilizza un renderizzatore di prezzi che dipende dal tipo di prodotto:
$type_id = $product->getTypeId(); // e.g. simple, configurable, bundle, grouped, ...
$this->_preparePriceRenderer($type_id)
Il renderer dei prezzi è un blocco con un modello associato. Entrambi dipendono dal tipo di prodotto.
Se non è stato definito alcun blocco o modello per il tipo di prodotto specificato, per impostazione predefinita è il catalog/product_price
blocco e il catalog/product/price.phtml
modello.
Dove sono definiti i renderer dei prezzi e i modelli per i tipi di prodotto?
I blocchi di prezzo e i renderer di solito sono specificati usando XML di layout, quindi i moduli che aggiungono nuovi tipi di prodotti possono facilmente aggiungere anche i propri renderer. Per esempio. il prodotto in bundle aggiunge il suo renderer di prezzi come segue nel bundle.xml
file di 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>
Modelli di prezzo personalizzati o renderer
Utilizzando lo stesso meccanismo è anche possibile sovrascrivere i renderer predefiniti. Se vuoi semplicemente cambiare il modello e mantenere il tipo di blocco di prezzi predefinito, chiama semplicemente addPriceBlockType
il file di layout con il blocco predefinito (vedi sopra) e il tuo modello.
Rendering del blocco dei prezzi
Il codice per il rendering effettivo del blocco di prezzo è simile al seguente:
$this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
Le variabili $displayMinimalPrice
e $idSuffix
sono argomenti opzionali per il getPriceHtml
metodo.
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
La $idSuffix
è utilizzata nel modello di prezzo per completare l'id CSS del <span>
tag che circonda il prezzo effettivo, per esempio:
<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">