如何在magento2中阻止礼品卡页面的货币切换器

时间:2019-12-14 15:54:15

标签: php magento magento2 currency mage

我正在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美元的礼品卡?

我该如何实现?

2 个答案:

答案 0 :(得分:0)

Mageworx礼品卡充当新产品类型mageworx_giftcards。为了实现所需的功能,您可以在Magento中使用多个商店(最好是网站)选项。

为此,请按照以下步骤操作。

  1. 为USD和CAD创建单独的商店(最好是网站)。
  2. 更改产品属性price的范围以存储全局视图。
  3. 设置每个商店视图的礼品卡价格,对于美元商店/网站表示20美元,对于CAD商店/网站表示20加元。

注意:您应在单独的暂存实例上测试给定的建议,然后再尝试在现场进行尝试,因为如果未正确遵循该建议,可能会引起一些问题。

答案 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显示原始价格。如果我对其进行一些计算,则价格将设置为零。请帮助我。