不要在管理页面加载时检查地理位置

时间:2014-01-27 05:56:38

标签: magento magento-1.7 magento-1.5 magento-1.6

为了根据IP查找客户端的地理位置并重定向到适当的商店,我使用GeoIP扩展和一个小的切换案例来重定向用户。我将switch case放在index.php文件中,页面通过它加载。但我不想在管理页面加载时检查地理位置。因此,如果管理员访问该网站,它不必检查位置。它必须只是加载页面。那我该怎么做呢。

2 个答案:

答案 0 :(得分:0)

创建新的Magento模块,并为其添加一个辅助类

class Namespace_Modulename_Helper_Isadmin extends Mage_Core_Helper_Abstract
{
    public function isAdmin()
    {
        if(Mage::app()->getStore()->isAdmin())
        {
            return true;
        }

        if(Mage::getDesign()->getArea() == 'adminhtml')
        {
            return true;
        }

        return false;
    }
}

现在,只要您需要检查是否在管理员中,请使用此帮助程序

if( Mage::helper('modulename/isadmin')->isAdmin() )
{
    //bypass the geoip check
}

答案 1 :(得分:0)

这就是我解决问题的方法。我已经安装了GeoIP扩展。由此我们可以获得基于IP的国家代码。我在观察者中添加了一个函数,这只会在页面加载时触发一次事件“controller_action_predispatch”,在观察者中,我使用一个switch case在商店之间切换。这是我的功能&切换案例。

public function getLocationInfoByIp($observer) {

        $geoIP = Mage::getSingleton('geoip/country');
        $cnCode =  $geoIP->getCountry(); 

        switch ($cnCode) {

            case "US": {
                  Mage::app()->setCurrentStore('en');
                break;
                }
            case "IN": {
                Mage::app()->setCurrentStore('de');
                    break;
                }
            default: {
                Mage::app()->setCurrentStore('en');
                        break;
                    }
                }
        }
    }