Me enfrento a un problema muy extraño después de la instalación de Magento 2.0.4. He creado un producto con el precio de $ 12 y cambio la configuración regional de la configuración de Magento en el back-end.
A continuación se muestra la captura de pantalla para la página de listado.
También encuentre la siguiente captura de pantalla para la página de detalles.
Es posible que haya notado la diferencia entre dos capturas de pantalla. Sí, la página de detalles del producto muestra un precio de $ 0.00 mientras que la página de listado retiene con el precio lo que he agregado.
La página de detalles del producto actualiza automáticamente el precio correcto a $ 0,00 después de uno o dos segundos (actualizaciones de Javascript).
Encuentra el siguiente código para ello
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
He depurado más en el código y encuentro otro código javascript que pasa el parámetro al widget Magento 2 pricebox.
<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>
Ahora he comprobado el método 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
];
Hice mucha depuración a través del código y llegué a la conclusión de que están usando ICUDATA para soporte local.
Estoy atrapado con todo esto, parece que es un problema de PriceFormat.
Asegúrese de que este problema surja solo para ciertas opciones de configuración regional como Persion (Irán).