Когда пользователь переходит на страницу, проверьте, установлен ли файл 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