Magento在单个域上的多种货币,没有子目录

时间:2014-05-09 19:19:08

标签: php magento magento-1.7

我正在尝试建立一个允许大约6种不同货币的网站。我最初能够利用Magento内置的货币汇率很好地实现这一目标,客户可以选择他们偏好的货币,所有价格都以该货币显示。但是我最近发现,尽管价格在那种货币中,Magento仍然会以基础货币处理交易,在这种情况下是GBP。事实上,它并没有告诉客户这是在订单结束之前会发生什么,在我看来这是非常糟糕的事情,一些客户可能还会被银行收取更多的货币转换费用。

由于PayPal已配置为允许以6种货币付款,我希望客户能够以这些货币付款。

我发现由于Magento的构建方式,这不是一项容易的任务,而是应该为每种货币设置一个新的“网站”,然后我可以为每个网站设置一个基础货币。这听起来很容易,但是关于这一切的教程似乎都强迫每个网站都有自己独特的网址 - 例如us.website.comwebsite.com/us - 但在这种情况下,这不会做,我们需要一切仅使用一个基本网址website.com

有人知道这是否可行?

我已经能够通过手动将以下内容添加到index.php来更改商店,我想一个可能的解决方案是记住会话中的用户选择,然后在此处加载正确的商店。这会有效还是有更好的方法来做到这一点我忽略了?

/* Override store code */
if (isset($_GET['code']))
{
    $mageRunCode = $_GET['code'];
    $mageRunType = 'website';
}

Mage::run($mageRunCode, $mageRunType);

该网站正在运行Magento Community Edition v1.7.0.2。

1 个答案:

答案 0 :(得分:0)

我已经能够使用与index.php

中类似的内容实现此目的
if (isset($_GET["currency"]) || !isset($_COOKIE["basewebsite"]))
{
        // List of available stores
        $stores = array('usd','aud','eur');
        $website = 'base'; // Default store ID

        if (isset($_GET['currency']) && in_array($_GET['currency'], $stores))
        {
             $website = $_GET['currency'];
        }

        // Set cookie to remember selection
        setcookie("basewebsite", $website);
        $_COOKIE['basewebsite'] = $website;
}
else
{
        $website = $_COOKIE['basewebsite'];
}

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : $website;

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'website';

Mage::run($mageRunCode, $mageRunType);

有了这个,我可以通过简单地将?currency=usd添加到任何Magento网址的末尾来更改网站。然后,cookie会记住选择,并且正确的网站会加载任何进一步的请求。

这个问题没有收到很多意见,但如果有人确实找到了更好的解决方案,那么请告诉我!