Magento EE – display global messages when you have Full Page Cache turned on
Have you ever wanted to enable Magento global messages when you have Full Page Cache (FPC) turned on ? I wanted it, but after several hours of debugging and studying magento caching mechanism, i found it’s hard to punch a hole for Magento global message, i thought about an alternative solution – ignoring FPC when we have global message !
By default, when we add this GET parameter ‘?___store’ to request url, Magento will bypass caching and generate content from files, sessions and database for you. With this clue, we know what we need to do is to add ‘?___store’ parameter to redirect url so we can achieve our goal
In order to do that, you will need to override a controller that you want to display global message after have action in that controller done.
<frontend> <routers> <catalog> <args> <modules> <Wagento_Custom before="Mage_Catalog">Wagento_Custom</Wagento_Custom> </modules> </args> </catalog> </routers> </frontend>
Then you need to modify _redirectReferer function extended from Mage_Core_Controller_Varien_Action like this
<?php /*include Mage_Catalog_Product_CompareController to extend it*/ require_once 'Mage/Catalog/controllers/Product/CompareController.php'; class Wagento_Custom_Product_CompareController extends Mage_Catalog_Product_CompareController { protected function _redirectReferer() { $refererUrl = $this->_getRefererUrl(); if (empty($refererUrl)) { $refererUrl = empty($defaultUrl) ? Mage::getBaseUrl() : $defaultUrl; } /*inject ignore global full page cache param*/ if (!strpos($refererUrl, '?___store')) { $refererUrl .= '?___store'; } /*end of hacking*/ $this->getResponse()->setRedirect($refererUrl); //parent::_redirectReferer($url); // call _redirectReferer from Mage_Core_Controller_Varien_Action return $this; } }
that’s it, we’ve done it in dirty way
Awesome Solution…