Мадженто. Сохранить выбор посетителя магазина в файлах cookie

Мне нужно проверить, впервые ли посетитель на сайте, и показать блок с выбором страны (магазины). Затем мне нужно сохранить выбор посетителя в файлах cookie (я просто думаю, что правильно сохранять его в файлах cookie). Может кто так делал и\или может помочь?

Спасибо.


person Lex    schedule 03.10.2012    source источник


Ответы (1)


Когда пользователь переходит на страницу, проверьте, установлен ли файл cookie, если он затем перенаправляется в представление магазина на основе значения файла cookie.

Я новичок в magento, поэтому, вероятно, есть лучший способ сделать это, но мне нужно было что-то подобное.

У меня было окно выбора во всплывающем окне, когда пользователь попадал на страницу, на которой были перечислены все представления магазина (это было в index.php и отображается только тогда, когда файл cookie не установлен), при изменении значения, отправленного формой, я затем сделал следующее в нижней части файла head.php

    if(isset($_POST['selectbox'])){
        $storeId = $_POST['selectbox'];
        $store_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).$storeId;
        $cookie = Mage::getModel('core/cookie');
        $period = time()+86400;
        $cookie->set('country', $storeId,$period, '/');

        Mage::app()->getResponse()->setRedirect($store_url);
    }

Итак, после отправки формы я взял значение кода магазина и установил файл cookie с именем страны, а затем перенаправил пользователя на конкретный вид магазина.

Затем я сделал еще одну проверку под этим кодом, чтобы увидеть, был ли установлен файл cookie страны (для следующего посещения сайта пользователем).

     if(isset($_COOKIE['country'])){
        $storeId = $_COOKIE['country'];
        $magento_store_id = Mage::app()->getStore()->getCode();
        $redirect_to = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB).$storeId;

    if($storeId != $magento_store_id)
     {   
       echo "<script type='text/javascript'>window.location.href='".$redirect_to."';</script>";
     }

Я проверил, не равен ли текущий код магазина значению, хранящемуся в файле cookie, и если это не так, то перенаправьте этого пользователя в правильное представление магазина. Мне пришлось использовать перенаправление javascript из-за того, что заголовки уже выводят ошибки.

Надеюсь, это даст вам некоторые идеи о том, как использовать куки... но, как я уже сказал, я думаю, что есть лучший способ сделать это. Честно говоря, я был бы рад увидеть правильный способ сделать это сам, чтобы я мог его использовать.

person Rambo    schedule 03.10.2012
comment
никогда не используйте $_POST['selectbox'] - это Magento. Он будет обходить всю логику безопасности Magento и, следовательно, будет подвержен взлому. - person Oscprofessionals; 12.03.2013
comment
Привет Сатиш, тогда как это сделать? не могли бы вы представить измененный код приведенного выше примера, чтобы другие могли его использовать. спасибо - person iSrini; 13.01.2015