我正在Magento 2网站上工作。我已经在magento2中安装了Mageworx礼品卡,并且工作正常。货币切换器也工作正常。
我的问题是客户希望礼品卡页面上的面额相同。例如,我们有US $ 20,US $ 30,US $ 50 ...但是,如果用户选择CAD货币,则显示为CA $ 26.33,CA $ 39.50,CA $ 65.83。 礼物卡。对于礼品卡金额,货币无法转换为CAD。我们可以使用与美元相同的面额的CAD吗?也就是说,我们出售一张价值20美元的卡,或者如果将货币转换为CAD,那是一张20美元的礼品卡?
我该如何实现?
答案 0 :(得分:0)
Mageworx礼品卡充当新产品类型mageworx_giftcards
。为了实现所需的功能,您可以在Magento中使用多个商店(最好是网站)选项。
为此,请按照以下步骤操作。
price
的范围以存储全局视图。注意:您应在单独的暂存实例上测试给定的建议,然后再尝试在现场进行尝试,因为如果未正确遵循该建议,可能会引起一些问题。
答案 1 :(得分:0)
只有一个商店视图。我试图使用观察者更改价格。
<event name="checkout_cart_product_add_after">
<observer name="customprice" instance="Mageplaza\GiftCard\Observer\CustomPrice" /></event>
Customprice Observer file
class CustomPrice implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer) {
$item = $observer->getEvent()->getData('quote_item');
$item = ( $item->getParentItem() ? $item->getParentItem() : $item );
$product=$observer->getEvent()->getData('product');
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$priceCurrencyFactory = $objectManager->get('Magento\Directory\Model\CurrencyFactory');
$storeManager = $objectManager->get('Magento\Store\Model\StoreManagerInterface');
$currencyCodeTo = $storeManager->getStore()->getCurrentCurrency()->getCode();
$currencyCodeFrom = $storeManager->getStore()->getBaseCurrency()->getCode();
$priceHelper = $objectManager->create('Magento\Framework\Pricing\Helper\Data');
$product = $observer->getProduct();
if($currencyCodeTo == "CAD")
{
//$currency = $objectManager->create('Magento\Directory\Model\Currency')->load('USD');
$price = $product->getPrice()/2;
}
else {
$price = $product->getPrice();
}
$item->setCustomPrice($price);
$item->setOriginalCustomPrice($price);
$item->getProduct()->setIsSuperMode(true);
return $this;
}
}
但是对于CAD
,价格显示为0
。如果我使用$product->getPrice()
,只有ot
显示原始价格。如果我对其进行一些计算,则价格将设置为零。请帮助我。