4

如何获得价格产品

使用简单的产品:

$oldPrice= $_product->getPrice(); $newPrice= $_product->getSpecialPrice();

它返回正确的结果

使用可配置产品:

$oldPrice= $_product->getPrice(); //return Null $newPrice= $_product->getSpecialPrice(); // return Null

我有 1 个可配置产品和 2 个简单产品

TestCon1 Simple1:价格 120 美元。特价:100$

simple2:价格 120 美元。特价:90 美元

我需要获得可配置回报的价格:TestCon1 价格 120 美元。特价:90 美元。

我用$oldpriceConf= $_product->getFinalPrice(); // retunr 100$

4

2 回答 2

3

可配置产品没有任何常规价格或特价。在前端,他们的子产品的价格被视为他们的正常价格。

于 2016-04-26T05:23:35.533 回答
1

看看 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); ?>

这可以很好地显示预先格式化的价格和销售价格以及划掉的旧价格。

在此处输入图像描述

于 2018-09-10T22:03:13.497 回答