Magento Geolocalization/FPC

В Magento EE мне нужно перенаправить клиентов в зависимости от страны происхождения, языка браузера и предыдущего предпочтения, заданного в файле cookie.

У меня огромные проблемы с тем, чтобы он работал с FPC.

Я пытался наблюдать controller_action_predispatch событие, но FPC как-то кеширует мою инструкцию по перенаправлению, и клиент не перенаправляется.

Затем я попробовал другое решение: расширение метода run() в Mage_Core_Model_App чтобы выполнить операции до того, как FPC начнет работать.

К сожалению, я не знаю почему, внутри этого метода вы не можете получить доступ Mage::getModel(), Mage::helper(), Mage::getConfig() ЕСС

Не могли бы вы мне помочь?

Спасибо

1 ответ

Я недавно пережил точно такую ​​же боль. Ты на правильном пути;

controller_action_predispatch

Это правильное событие для наблюдения, и вы можете использовать его довольно счастливо, если вы перенаправляете на страницу категории или продукта с включенным FPC. Проблема в домашней странице, которая является страницей CMS. Кэш страницы cms не запускает controller_action_predispatch. Я обошел это, добавив это своему наблюдателю;

public function switchUser($event)
{

// CMS page bug, disable FPC to still use observer
    $action = $event->getEvent()->getControllerAction();
    if($action instanceof Mage_Cms_IndexController) {
         $cache = Mage::app()->getCacheInstance();
         $cache->banUse('full_page');
     }
// do the rest of your code here
}

Блоки внутри страницы cms будут по-прежнему кэшироваться, поэтому страница по-прежнему нестабильна, хотя, очевидно, не так быстро, как при полной FPC. Это разумный компромисс, на мой взгляд.

Другие вопросы по тегам