Installing php-geoip:
If you have full control over your server running Magento, then this task is really easy. Log in with a sudo account or root and just use your distro’s package manager to install php-geoip. On Ubuntu/Debian, all you need to do is:
Now we will create module.
Create file "/app/code/local/MageTalks/Custom/etc/config.xml"
Then in "/app/code/local/MageTalks/Custom/Model/Store.php"
If you have full control over your server running Magento, then this task is really easy. Log in with a sudo account or root and just use your distro’s package manager to install php-geoip. On Ubuntu/Debian, all you need to do is:
sudo apt-get install php5-geoip
For other distros, you may need to google around a little.Now we will create module.
Create file "/app/code/local/MageTalks/Custom/etc/config.xml"
0.1 MageTalks_Custom_Model_Store
Then in "/app/code/local/MageTalks/Custom/Model/Store.php"
class MageTalks_Custom_Model_Store extends Mage_Core_Model_Store { public function getDefaultCurrencyCode() { // by default we look for the configured currency code $result = $this->getConfig(Mage_Directory_Model_Currency::XML_PATH_CURRENCY_DEFAULT); // however, in our case we want to determine the default currency depending on the country/continent of the visitor $geoCountryCode = null; try { // we'll try to get the visitor country $geoCountryCode = geoip_country_code_by_name( $_SERVER['REMOTE_ADDR'] ); } catch (Exception $e) { // prevent NOTICE error - for example we are running the code on a localhost } // first tier check is the specific countries to set the currency for // NOTE: you can roll your own logic here depending on your enabled/supported countries/currencies // this example assumes that AUD, GBP, JPY, USD, EUR and NZD are the supported currencies switch ($geoCountryCode) { case "AU": $result = "AUD"; break; case "GB": $result = "GBP"; break; case "JP": $result = "JPY"; break; default: $geoContinentCode = null; // now grab the continent code and set further by general regions try { $geoContinentCode = geoip_continent_code_by_name( $_SERVER['REMOTE_ADDR'] ); // You can debug here to check the continent codes... Mage::log("GEOIP::CONTINENT::".$geoCountryCode); } catch (Exception $e) { Mage::log("EXCEPTION CAUGHT".$e->getMessage()); // prevent NOTICE error } // Now decide what currency to set depending on broad regions switch ($geoContinentCode) { case "EU": // we'll set EUR for European countries $result = "EUR"; break; case "NA": // North America case "SA": // South America case "AS": // Asia case "AF": // Africa - all of them will see USD $result = "USD"; break; default: // everything else uses the default store currency as set in config } } return $result; } }Then all we need is the module xml file in "/app/etc/modules/MageTalks_Custom.xml"
true local
No comments:
Post a Comment