Produktpreisanzeige
Die Methode getPriceHtml()
ist in der Blockklasse definiert Mage_Catalog_Block_Product_Abstract
.
Die Methode verwendet einen Preisrenderer, der vom Produkttyp abhängt:
$type_id = $product->getTypeId(); // e.g. simple, configurable, bundle, grouped, ...
$this->_preparePriceRenderer($type_id)
Der Preisrenderer ist ein Block mit einer zugehörigen Vorlage. Beides hängt vom Produkttyp ab.
Wenn für den angegebenen Produkttyp kein Block oder keine Vorlage definiert ist, werden standardmäßig der catalog/product_price
Block und die catalog/product/price.phtml
Vorlage verwendet.
Wo sind die Preisrenderer und Vorlagen für Produkttypen definiert?
Die Preisblöcke und Renderer werden normalerweise mithilfe von Layout-XML angegeben, sodass Module, die neue Produkttypen hinzufügen, problemlos auch ihre eigenen Renderer hinzufügen können. Beispielsweise. Das Produktpaket fügt den Preisrenderer wie folgt in die bundle.xml
Layoutdatei ein:
<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>
Benutzerdefinierte Preisvorlagen oder Renderer
Mit demselben Mechanismus können auch die Standardrenderer überschrieben werden. Wenn Sie nur die Vorlage ändern und den Standardpreisblocktyp beibehalten möchten, rufen Sie einfach addPriceBlockType
die Layoutdatei mit dem Standardblock (siehe oben) und Ihrer Vorlage auf.
Rendern des Preisblocks
Der Code zum Rendern des Preisblocks sieht folgendermaßen aus:
$this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
Die Variablen $displayMinimalPrice
und $idSuffix
sind optionale Argumente für die getPriceHtml
Methode.
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
Das $idSuffix
wird in der Preisvorlage verwendet, um die CSS-ID des <span>
Tags zu vervollständigen, das den tatsächlichen Preis umgibt. Beispiel:
<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">