Ich habe nach der Installation von Magento 2.0.4 ein sehr seltsames Problem. Ich habe ein Produkt mit dem Preis von $ 12 erstellt und das Gebietsschema aus der Magento-Konfiguration im Backend geändert.
Unten ist der Screenshot für die Listingseite.
Finden Sie auch den folgenden Screenshot für die Detailseite.
Möglicherweise haben Sie den Unterschied zwischen zwei Screenshots bemerkt. Ja, auf der Produktdetailseite wird ein Preis von 0,00 USD angezeigt, während die Listingseite den von mir hinzugefügten Preis beibehält.
Die Produktdetailseite aktualisiert den korrekten Preis automatisch auf 0,00 €. Nach ein oder zwei Sekunden (Javascript-Updates).
Finden Sie den folgenden Code dafür
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
Ich habe weiter im Code debuggt und finde einen anderen Javascript-Code, der Parameter an das Magento 2-Preisbox-Widget übergibt.
<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>
Jetzt habe ich die Methode getJsonConfig () überprüft,
$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
];
Ich habe viel durch den Code debuggt und bin zu dem Schluss gekommen, dass sie ICUDATA für die Unterstützung des Gebietsschemas verwenden.
Ich bin mit dieser ganzen Sache fest, es scheint, dass es PriceFormat Ausgabe ist.
Stellen Sie sicher, dass dieses Problem nur bei bestimmten Gebietsschemaoptionen wie Persion (Iran) auftritt.