Plik szablonu strony katalogu z wykazem produktów to list.phtml
. Gdzie renderowanie wszystkich produktów w kategorii odbywa się za pomocą foreach
pętli.
Jestem zdezorientowany co do renderowania pliku price.phtml
. Ponieważ nie ma dla niego żadnego bloku<catalog_category_default>
Teraz <?php echo $this->getPriceHtml($_product, true) ?>
zwraca cenę produktu.
W jaki sposób ta metoda jest powiązana price.phtml
?
magento-1.7
price
template
Ricky Sharma
źródło
źródło
Odpowiedzi:
Wyświetlanie ceny produktu
Metoda
getPriceHtml()
jest zdefiniowana w klasie blokuMage_Catalog_Block_Product_Abstract
.Metoda wykorzystuje mechanizm renderujący ceny, który zależy od typu produktu:
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 icatalog/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: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:
$displayMinimalPrice
I$idSuffix
zmienne są opcjonalne argumenty dogetPriceHtml
metody.Jest
$idSuffix
on używany w szablonie ceny do uzupełnienia identyfikatora CSS<span>
tagu otaczającego rzeczywistą cenę, na przykład:źródło