看看 Magento 2 中的这个文件:
vendor\magento\module-catalog\Block\Product\ListProduct.php
它包含 2 个可以粘贴到块中的方法:
/**
* @param \Magento\Catalog\Model\Product $product
* @return string
*/
public function getProductPrice(\Magento\Catalog\Model\Product $product)
{
$priceRender = $this->getPriceRender();
$price = '';
if ($priceRender) {
$price = $priceRender->render(
\Magento\Catalog\Pricing\Price\FinalPrice::PRICE_CODE,
$product,
[
'include_container' => true,
'display_minimal_price' => true,
'zone' => \Magento\Framework\Pricing\Render::ZONE_ITEM_LIST,
'list_category_page' => true
]
);
}
return $price;
}
/**
* Specifies that price rendering should be done for the list of products
* i.e. rendering happens in the scope of product list, but not single product
*
* @return \Magento\Framework\Pricing\Render
*/
protected function getPriceRender()
{
return $this->getLayout()->getBlock('product.price.render.default')
->setData('is_product_list', true);
}
在 .phtml 模板文件中像这样使用:
<?php echo $this->getProductPrice($product); ?>
这可以很好地显示预先格式化的价格和销售价格以及划掉的旧价格。