Wyświetlanie ceny produktu
Metoda getPriceHtml()
jest zdefiniowana w klasie bloku Mage_Catalog_Block_Product_Abstract
.
Metoda wykorzystuje mechanizm renderujący ceny, który zależy od typu produktu:
$type_id = $product->getTypeId(); // e.g. simple, configurable, bundle, grouped, ...
$this->_preparePriceRenderer($type_id)
Mechanizm renderujący ceny to blok z powiązanym szablonem. Oba zależą od rodzaju produktu.
Jeśli dla określonego typu produktu nie zdefiniowano bloku ani szablonu, domyślnie jest to catalog/product_price
blok i catalog/product/price.phtml
szablon.
Gdzie są zdefiniowane rendery i szablony cen dla typów produktów?
Bloki cenowe i renderery są zwykle określane przy użyciu układu XML, więc moduły, które dodają nowe typy produktów, mogą łatwo dodawać własne renderery. Na przykład. dołączony produkt dodaje swój renderer ceny w następujący sposób w bundle.xml
pliku układu:
<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>
Niestandardowe szablony cen lub renderery
Za pomocą tego samego mechanizmu można również zastąpić domyślne renderery. Jeśli chcesz tylko zmienić szablon i zachować domyślny typ bloku cenowego, po prostu wywołaj addPriceBlockType
plik układu z domyślnym blokiem (patrz wyżej) i szablonem.
Renderowanie bloku cenowego
Kod do renderowania bloku cen wygląda następująco:
$this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
$displayMinimalPrice
I $idSuffix
zmienne są opcjonalne argumenty do getPriceHtml
metody.
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
Jest $idSuffix
on używany w szablonie ceny do uzupełnienia identyfikatora CSS <span>
tagu otaczającego rzeczywistą cenę, na przykład:
<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">