Magento 2 - 产品详细信息页

时间:2016-04-12 07:32:41

标签: magento magento2 magento-2.0 magento2.0.2

安装Magento 2.0.4后,我遇到了一个非常奇怪的问题。我创建了一个价格为12美元的产品,并在后端更改了Magento配置的区域设置。

以下是列表页面的屏幕截图。

enter image description here

另请参阅详细信息页面的以下屏幕截图。

enter image description here

您可能已经注意到两个屏幕截图之间的区别。是的,产品详细信息页面显示$ 0.00价格,而列表页面保留了我已添加的价格。

产品详细信息页面会在一两秒后自动将正确的价格更新为$ 0,00(Javascript更新)。

找到以下代码

$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));

我在代码中进一步调试,发现了另一个将参数传递给Magento 2 pricebox小部件的javascript代码。

<script>
    require([
        'jquery',
        'Magento_Catalog/js/price-box'
    ], function($){
        var priceBoxes = $('[data-role=priceBox]');

        priceBoxes = priceBoxes.filter(function(index, elem){
            return !$(elem).find('.price-from').length;
        });

        priceBoxes.priceBox({'priceConfig': <?php /* @escapeNotVerified */ echo $block->getJsonConfig() ?>});
    });
</script>

现在我检查了getJsonConfig()方法,

  $product = $this->getProduct();

        if (!$this->hasOptions()) {
            $config = [
                'productId' => $product->getId(),
                'priceFormat' => $this->_localeFormat->getPriceFormat()
                ];
            return $this->_jsonEncoder->encode($config);
        }

        $tierPrices = [];
        $tierPricesList = $product->getPriceInfo()->getPrice('tier_price')->getTierPriceList();
        foreach ($tierPricesList as $tierPrice) {
            $tierPrices[] = $this->priceCurrency->convert($tierPrice['price']->getValue());
        }
        $config = [
            'productId' => $product->getId(),
            'priceFormat' => $this->_localeFormat->getPriceFormat(),
            'prices' => [
                'oldPrice' => [
                    'amount' => $this->priceCurrency->convert(
                        $product->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue()
                    ),
                    'adjustments' => []
                ],
                'basePrice' => [
                    'amount' => $this->priceCurrency->convert(
                        $product->getPriceInfo()->getPrice('final_price')->getAmount()->getBaseAmount()
                    ),
                    'adjustments' => []
                ],
                'finalPrice' => [
                    'amount' => $this->priceCurrency->convert(
                        $product->getPriceInfo()->getPrice('final_price')->getAmount()->getValue()
                    ),
                    'adjustments' => []
                ]
            ],
            'idSuffix' => '_clone',
            'tierPrices' => $tierPrices
        ];

我通过代码进行了大量调试,并得出他们正在使用ICUDATA进行语言环境支持的结论。

我坚持这一切,似乎是PriceFormat问题。

请确保此问题仅针对某些语言环境选项,如Persion(伊朗)。

0 个答案:

没有答案