Answers:
该方法getPriceHtml()
在块类中定义Mage_Catalog_Block_Product_Abstract
。
该方法使用取决于产品类型的价格渲染器:
$type_id = $product->getTypeId(); // e.g. simple, configurable, bundle, grouped, ...
$this->_preparePriceRenderer($type_id)
价格渲染器是带有关联模板的块。两者都取决于产品类型。
如果没有为指定的产品类型定义块或模板,则默认为catalog/product_price
块和catalog/product/price.phtml
模板。
价格块和渲染器通常使用布局XML指定,因此添加新产品类型的模块也可以轻松添加自己的渲染器。例如。捆绑的产品将其价格渲染器添加到bundle.xml
布局文件中,如下所示:
<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>
使用相同的机制,还可以覆盖默认渲染器。如果您只想更改模板并保留默认的价格块类型,则只需addPriceBlockType
使用默认块(请参见上文)和您的模板来调用布局文件。
实际呈现价格块的代码如下所示:
$this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
在$displayMinimalPrice
和$idSuffix
变量的参数是可选的getPriceHtml
方法。
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
将$idSuffix
在价格模板用于完成的CSS ID <span>
周边的实际价格,例如标签:
<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">