Question

03Cp> Nous suivons 03Ca href="https://www.atwix.com/magento/geoip-magento-store-switcher/" rel="nofollow noreferrer">Ce lienu003C/a> pour afficher des vues de magasin basées sur le pays.u003C/

03Cp> Si quelqu'un visitent le site des États-Unis, il ouvrira us store view, Canada => Canada store view, ainsi de suite.u003C/

03Cp> Nous affichons le commutateur de vue en magasin sur le dessus en tant que 03Ca href="http://sbdev2.kidsdial.com/" rel="nofollow noreferrer">Iciu003C/. Quelqu'un des États-Unis a changé de vue sur la vue sur le magasin de Canada.u003C/

03Cp> Mais une fois qu'il clique sur une autre page (menu, catalogue, produit, CMS), il affichera à nouveau une vue en magasin ancienne (USA).u003C/

03Cp> Mais il devrait être de même vue sur la même valeur jusqu'à ce que nous le changions manuellement.u003C/

enter image description here

03Cp> u003Cstrong>Observateur.php:u003C/strong>u003C/

class Atwix_Ipstoreswitcher_Model_Observer
{
    /**
     * redirects customer to store view based on GeoIP
     * @param $event
     */
    public function controllerActionPostdispatch($event)
    {

        if (!empty($_GET['___from_store'])) {
            Mage::app()->setCurrentStore($_GET['___store']);
        } else {
            $geoIP = Mage::getSingleton('geoip/country');
            $cnCode = $geoIP->getCountry();
            // echo $cnCode;
            // echo $cnCode='IN';
            switch ($cnCode) {
                case "US": {
                    Mage::app()->setCurrentStore('usa');
                    break;
                }
                case "IN": {
                    Mage::app()->setCurrentStore('india');
                    break;
                }
                case "CA": {
                    Mage::app()->setCurrentStore('canada');
                    break;
                }
                case "UK": {
                    Mage::app()->setCurrentStore('europe');
                    break;
                }

                case "AU": {
                    Mage::app()->setCurrentStore('australia');
                    break;
                }
            }

        }

    }
}
Était-ce utile?

La solution

03Cp> Je n'ai pas encore testé cette solution, mais je pense que cela devrait fonctionner:u003C/

class Atwix_Ipstoreswitcher_Model_Observer
{
    /**
     * redirects customer to store view based on GeoIP
     * @param $event
     */
    public function controllerActionPostdispatch($event)
    {
        /** @var Mage_Customer_Model_Session $session */
        $session = Mage::getSingleton('customer/session');
        if (!empty($_GET['___from_store'])) {
            Mage::app()->setCurrentStore($_GET['___store']);
            $session->setData('current_country', $_GET['___store']);
        } else {
            $geoIP = Mage::getSingleton('geoip/country');
            $cnCode = $session->getData('current_country') ? $session->getData('current_country') : $geoIP->getCountry();
            // echo $cnCode;
            // echo $cnCode='IN';
            switch ($cnCode) {
                case "US": {
                    Mage::app()->setCurrentStore('usa');
                    break;
                }
                case "IN": {
                    Mage::app()->setCurrentStore('india');
                    break;
                }
                case "CA": {
                    Mage::app()->setCurrentStore('canada');
                    break;
                }
                case "UK": {
                    Mage::app()->setCurrentStore('europe');
                    break;
                }

                case "AU": {
                    Mage::app()->setCurrentStore('australia');
                    break;
                }
            }

        }

    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top