Отображение цены продукта
Метод 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() ?>">