Magento 2 - изменение цены товара до 0,00 на странице с описанием товара

Я сталкиваюсь с очень странной проблемой после установки Magento 2.0.4. Я создал продукт с ценой $12 и изменил локаль из конфигурации Magento в бэкэнде.

Ниже приведен скриншот страницы со списком.

Также найдите скриншот ниже для подробной информации.

Вы могли заметить разницу между двумя скриншотами. Да, на странице сведений о товаре отображается цена в 0,00 долл. США, в то время как на странице со списком сохраняется цена, которую я добавил

Страница сведений о продукте автоматически обновляет правильную цену до $0,00 Через одну или две секунды (Обновления Javascript).

Найдите ниже код для этого

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

Далее я отлаживал код и нашел другой код javascript, который передает параметр в виджет ценника Magento 2.

<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 ответов

Другие вопросы по тегам