我有一个有多种货币的magento商店 . 产品价格根据IP地址以相关货币显示 . 我想将GBP设置为美国客户的默认货币,即不是美元(根据IP地址),价格应以美元显示为美国客户 .
我是magento的新手,任何帮助将不胜感激 .
我为这个作品创作了一个,你可以试试这个......
第1步:在 app/code/local/Amit/AutoCurrency/etc/config.xml 下创建config.xml
app/code/local/Amit/AutoCurrency/etc/config.xml
<?xml version="1.0"?> <config> <modules> <Amit_AutoCurrency> <version>1.0.0</version> </Amit_AutoCurrency> </modules> <global> <models> <core> <rewrite> <store>Amit_AutoCurrency_Model_Store</store> </rewrite> </core> </models> <helpers> <autocurrency> <class>Amit_AutoCurrency_Helper</class> </autocurrency> </helpers> </global> </config>
在store.php中是app / code / local / Amit / AutoCurrency / Model / Store.php
<?php class Amit_AutoCurrency_Model_Store extends Mage_Core_Model_Store { /** * Update default store currency code * * @return string */ public function getDefaultCurrencyCode() { $result = $this->getConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_DEFAULT); return $this->getCurrencyCodeByIp($result); } /** * Get Currency code by IP Address * * @return string */ public function getCurrencyCodeByIp($result = '') { // load GeoIP binary data file $geoIp = Mage::helper('autocurrency')->loadGeoIp(); $ipAddress = Mage::helper('autocurrency')->getIpAddress(); // get country code from ip address $countryCode = geoip_country_code_by_addr($geoIp, $ipAddress); if($countryCode == '') { return $result; } // get currency code from country code $currencyCode = geoip_currency_code_by_country_code($geoIp, $countryCode); // close the geo database geoip_close($geoIp); // if currencyCode is not present in allowedCurrencies // then return the default currency code $allowedCurrencies = Mage::getModel('directory/currency')->getConfigAllowCurrencies(); if(!in_array($currencyCode, $allowedCurrencies)) { if($currencyCode="USD"){ return "GBP"; } return $result; } if($currencyCode="USD"){ return "GBP"; } return $currencyCode; } }
帮助功能是app / code / local / Amit / AutoCurrency / Helper / Data.php
<?php class Amit_AutoCurrency_Helper_Data extends Mage_Core_Helper_Abstract { /** * Load GeoIP binary data file * * @return string */ public function loadGeoIp() { // Load geoip.inc include_once(Mage::getBaseDir().'/var/geoip/geoip.inc'); // Open Geo IP binary data file $geoIp = geoip_open(Mage::getBaseDir().'/var/geoip/GeoIP.dat',GEOIP_STANDARD); return $geoIp; } /** * Get IP Address * * @return string */ public function getIpAddress() { //return "124.41.230.51"; return $_SERVER['REMOTE_ADDR']; } }
应用程序的/ etc /模块/ Amit_AutoCurrency.php
<?xml version="1.0"?> <config> <modules> <Amit_AutoCurrency> <active>true</active> <codePool>local</codePool> </Amit_AutoCurrency> </modules> </config>
下载geoip文件转到
https://github.com/maxmind/geoip-api-php
我希望它对你有用
1 回答
我为这个作品创作了一个,你可以试试这个......
第1步:在
app/code/local/Amit/AutoCurrency/etc/config.xml
下创建config.xml在store.php中是app / code / local / Amit / AutoCurrency / Model / Store.php
帮助功能是app / code / local / Amit / AutoCurrency / Helper / Data.php
应用程序的/ etc /模块/ Amit_AutoCurrency.php
下载geoip文件转到
我希望它对你有用