|
Magentoを利用する目的は多言語、多通貨対応が目的だと思われます。 複数の通貨に対応する方法です。 通貨の設定†STORES - Configuration - GENERAL - Currency Setup - Currency Options にて 通貨レートの設定†通貨を設定するだけでは公開画面では通貨の切り替えはできません。 STORES - Currency Rates にて通貨レートの設定が必要になります。 何も考えずに Import Service を Yahoo Finance Exchange 選択し、Importした上で Save Currency Rates すればレートが保存されます。 あとはキャッシュをクリアすれば公開画面で通貨の切り替えが可能になります。 価格表示†価格は以下のテンプレートで表示されます。 変更したい場合は、以下にファイルをコピーして変更を加えます。 このテンプレート内で価格を取得する場合は以下でできます。 // インスタンス生成
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
// 商品データ取得
$productId = $block->getSaleableItem()->getId();
$product = $objectManager->get('Magento\Catalog\Model\Product')->load($productId);
var_dump(
'regular_price: ' . $block->getSaleableItem()->getPriceInfo()->getPrice('regular_price')->getAmount()->getValue(),
'final_price base: ' . $block->getSaleableItem()->getPriceInfo()->getPrice('final_price')->getAmount()->getBaseAmount(),
'final_price: ' . $block->getSaleableItem()->getPriceInfo()->getPrice('final_price')->getAmount()->getValue(),
'special_price: ' . $block->getSaleableItem()->getPriceInfo()->getPrice('special_price')->getAmount()->getValue(),
'FinalPrice: ' . $product->getFinalPrice(),
'FinalPrice: ' . $product->getPriceModel()->getFinalPrice(1, $product),
'CalculatedFinalPrice: ' . $product->getCalculatedFinalPrice(),
'MinimalPrice: ' . $product->getMinimalPrice(),
'SpecialPrice: ' . $product->getSpecialPrice()
);
通貨換算†ベース通貨の取得†$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $objectManager->get('Magento\Store\Model\StoreManagerInterface');
$baseCurrencyCode = $storeManager->getStore()->getBaseCurrencyCode();
選択中通貨の取得†$currencyCode = $storeManager->getStore()->getCurrentCurrency()->getCode(); ベース通貨から選択中通貨への換算†$currencyFactory = $objectManager->get('Magento\Directory\Model\CurrencyFactory');
$rate = $currencyFactory->create()->load($currencyCode)->getAnyRate($baseCurrencyCode);
$currentPrice = $basePrice * $rate;
$priceCurrency = $objectManager->create('Magento\Framework\Pricing\PriceCurrencyInterface');
$currentPrice = $priceCurrency->convert($basePrice, null, $currencyCode);
$currentPrice = $priceCurrency->convert($basePrice);
// 丸める $currentPrice = $priceCurrency->round($currentPrice ); |