Відображення ціни на товар
Метод 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 ідентифікатор <span>
тега навколишнього фактичну ціну, наприклад:
<span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>">