Magento 2.0.4를 설치 한 후 매우 이상한 문제에 직면하고 있습니다. 가격이 $ 12 인 제품을 만들고 백엔드의 Magento 구성에서 로캘을 변경했습니다.
아래는 목록 페이지의 스크린 샷입니다.
상세 페이지는 아래 스크린 샷을 참조하십시오.
두 스크린 샷의 차이점을 알 수 있습니다. 예, 제품 세부 정보 페이지에는 $ 0.00 가격이 표시되지만 목록 페이지에는 추가 한 가격이 유지됩니다.
제품 세부 정보 페이지는 1-2 초 후에 올바른 가격을 $ 0,00 (자동으로 업데이트)으로 자동 업데이트합니다.
아래 코드를 찾으십시오.
$('[data-price-type="' + priceCode + '"]', this.element).html(priceTemplate({data: price}));
코드에서 더 디버그하고 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>
이제 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를 사용하고 있다는 결론에 도달했습니다.
나는이 모든 것에 붙어 있습니다. 가격 형식 문제 인 것 같습니다.
Persion (이란)과 같은 특정 로케일 옵션에 대해서만이 문제가 발생하는지 확인하십시오.