Как происходит рендеринг цены.
-
16-10-2019 - |
Вопрос
Файл листика страницы страницы каталогов list.phtml
. Анкет Где рендеринг всех продуктов в категории происходит с использованием foreach
петля.
Я не понимаю, что price.phtml
. Анкет Потому что нет блока для его ручки <catalog_category_default>
В настоящее время, <?php echo $this->getPriceHtml($_product, true) ?>
Возвращает цену продукта.
Как этот метод связан с price.phtml
?
Решение
Дисплей цен на продукт
Метод 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
шаблон.
Где определяются визуализаторы цены и шаблоны для типов продуктов?
Ценовые блоки и визуализаторы обычно указываются с использованием Mayout 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() ?>">