Php 如何为每个国家/地区选择货币1

Php 如何为每个国家/地区选择货币1,php,magento,currency,geoip,Php,Magento,Currency,Geoip,大家好,谢谢阅读, 我正在magento上工作,我们正在使用geoip扩展来定位客户,然后根据他的位置来设计正确的货币。 如果我为每种允许的货币设定一个国家,为世界其他国家设定美元,比如为阿拉伯联合酋长国设定AED等等,这是很有效的。。。 但我被要求查看标题中包含国家货币+美元(默认显示货币)的下拉列表。 我所做的是将所有国家添加到美元货币中,以允许使用美元货币,并添加了我的下拉列表,一切正常,货币正在从下拉列表中更改。 现在告诉大家一切都很好,但我的问题是默认显示货币是第一页加载时使用的货币,

大家好,谢谢阅读, 我正在magento上工作,我们正在使用geoip扩展来定位客户,然后根据他的位置来设计正确的货币。 如果我为每种允许的货币设定一个国家,为世界其他国家设定美元,比如为阿拉伯联合酋长国设定AED等等,这是很有效的。。。 但我被要求查看标题中包含国家货币+美元(默认显示货币)的下拉列表。 我所做的是将所有国家添加到美元货币中,以允许使用美元货币,并添加了我的下拉列表,一切正常,货币正在从下拉列表中更改。 现在告诉大家一切都很好,但我的问题是默认显示货币是第一页加载时使用的货币,而不是在dorp down中显示的美元货币旁边的国家货币。 如何强制系统在首页加载时使用国家货币而不是美元?? 任何帮助,任何想法,我们都将不胜感激。
提前感谢。

如果您想根据访客国家选择默认货币,请按照以下步骤操作。不扩展magento

下载及 提取GeoIP.dat.gz,并在根目录中将其命名为GeoIP。将geoip.inc和geoip.dat保存在该文件夹中。 将/app/code/core/Mage/Directory/Block/Currency.php复制到local/Mage/Directory/Block/Currency.php中 使用以下代码获取当前访问者的国家/地区

define("GEOIP_DAT_FILE", $_SERVER['DOCUMENT_ROOT'] . "/geoip/GeoIP.dat");
define("GEOIP_INC_FILE", $_SERVER['DOCUMENT_ROOT'] . "/geoip/geoip.inc");
include(GEOIP_INC_FILE);

$_geoip = geoip_open(GEOIP_DAT_FILE ,GEOIP_STANDARD);
$_country_code = geoip_country_code_by_addr($_geoip, $_SERVER['REMOTE_ADDR']);
geoip_close($_geoip);
在方法getCurrentCurrencyCode中。设置如下内容,根据需要进行修改

public function getCurrentCurrencyCode()
{
    if (is_null($this->_getData('current_currency_code'))) {
        // do not use Mage::app()->getStore()->getCurrentCurrencyCode() because of probability
        // to get an invalid (without base rate) currency from code saved in session
        switch ($_country_code) {
        case 'IN':
            $currency_code = 'INR';
            break;              
        case 'FR':
            $currency_code = 'EUR';
            break;
        default:
            $currency_code = 'USD';
            break;
        }

        $this->setData($currency_code, Mage::app()->getStore()->getCurrentCurrency()->getCode());
    }

    return $this->_getData('current_currency_code');
}

希望,这将对您有所帮助。

如果您想根据访问者的国家选择默认货币,请按照以下步骤操作。不扩展magento

下载及 提取GeoIP.dat.gz,并在根目录中将其命名为GeoIP。将geoip.inc和geoip.dat保存在该文件夹中。 将/app/code/core/Mage/Directory/Block/Currency.php复制到local/Mage/Directory/Block/Currency.php中 使用以下代码获取当前访问者的国家/地区

define("GEOIP_DAT_FILE", $_SERVER['DOCUMENT_ROOT'] . "/geoip/GeoIP.dat");
define("GEOIP_INC_FILE", $_SERVER['DOCUMENT_ROOT'] . "/geoip/geoip.inc");
include(GEOIP_INC_FILE);

$_geoip = geoip_open(GEOIP_DAT_FILE ,GEOIP_STANDARD);
$_country_code = geoip_country_code_by_addr($_geoip, $_SERVER['REMOTE_ADDR']);
geoip_close($_geoip);
在方法getCurrentCurrencyCode中。设置如下内容,根据需要进行修改

public function getCurrentCurrencyCode()
{
    if (is_null($this->_getData('current_currency_code'))) {
        // do not use Mage::app()->getStore()->getCurrentCurrencyCode() because of probability
        // to get an invalid (without base rate) currency from code saved in session
        switch ($_country_code) {
        case 'IN':
            $currency_code = 'INR';
            break;              
        case 'FR':
            $currency_code = 'EUR';
            break;
        default:
            $currency_code = 'USD';
            break;
        }

        $this->setData($currency_code, Mage::app()->getStore()->getCurrentCurrency()->getCode());
    }

    return $this->_getData('current_currency_code');
}

希望,这会对您有所帮助。

我在magento方面不是很先进,在我的第一步中,如果我的问题不清楚,请让我知道,尝试以不同的方式解释。您到底想做什么?你想根据访客的国家设置默认货币吗?是的,并使美元成为商店的默认货币。我在magento方面不是很先进,在我的第一步中,如果我的问题不清楚,请让我知道,尝试以不同的方式解释。你到底想做什么?您想根据访客的国家/地区设置默认货币吗?是,并使USD(商店的默认货币)也可用。此代码将设置默认货币,如果需要,我们可以从下拉列表中选择不同的货币,这不会受到影响。谢谢,是的,这段代码会,但在第一页加载时会使用商店使用的默认货币,我想我在getCurrentCurrencyCode函数中找到了解决方案,现在我正在尝试处理一个国家允许使用多种货币的情况,在这里,我必须使页面使用国家的货币在第一页加载,而不是任何其他国家的货币,是允许这个国家。当我完成后,我的解决方案将发布:此代码将设置默认货币,如果需要,我们可以从下拉列表中选择不同的货币,这不会受到影响。谢谢,是的,此代码将发布,但在第一页加载时将使用商店使用的默认货币,我想我在getCurrentCurrencyCode函数中找到了解决方案,现在我正在尝试处理一个国家允许使用多种货币的情况,这里我必须使页面在第一页加载时使用国家的货币,而不是该国家允许的任何其他国家的货币。当我完成我的解决方案时,我将发布它: