2014-01-27 47 views
0

爲了根據IP查找客戶端的地理位置並將其重定向到合適的商店,我使用GeoIP擴展和小型開關盒來重定向用戶。我把開關盒放在index.php文件中,通過它加載頁面。但是我不想在管理頁面加載時檢查地理位置。所以如果管理員訪問該網站,它不必檢查位置。它必須簡單地加載頁面。所以我怎麼能做到這一點。不要檢查管理頁面上的地理位置加載

回答

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 
} 
+0

如果(法師::應用程序() - > getStore() - > isAdmin()){ 回波 '在管理員'; 返回true; }當我加載管理頁面時,這並不打印'管理員'。每次只打印其他部分,無論是管理員還是前端。 –

+0

Eveytime Mage :: getDesign() - > getArea();無論是在管理頁面還是前端頁面,這都會打印「前端」。我無法真正理解這一點。錯誤在哪裏? –

0

這是怎麼了我解決了我的問題。我已經安裝了GeoIP擴展。從這裏我們可以得到基於IP的國家代碼。我在觀察者中添加了一個函數,並且在頁面加載時使用事件「controller_action_predispatch」在觀察者中僅觸發一次,我使用切換案例在商店之間切換。這是我的功能&開關櫃。

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; 
        } 
       } 
     } 
    }