Quantcast
Channel: Baobaz Blog - magento
Viewing all articles
Browse latest Browse all 10

Https + Magento Cache + Internet Explorer = No image

$
0
0

Magento uses by default an advanced cache system in order to display templates content faster. But default configuration of this cache can sometime creates some issues.

Recently, we had some images that were not displayed in the top menu when we switch from an http page to a https page using Internet Explorer browser. Images in this menu still have a non secured (http) URI. Internet Explorer is not pleased with such content. By default, this browser does not display unsecured content on a secured page. We have this security warning displayed when some image have http URI on a https page:

Internet Explorer Security Warning

Block displaying top menu was using cache system but this cache was not regenerated when we switch from a http to a https page. That's why images were still having http URI.

For fixing this problem, we must rewrite getCacheKey method from Mage_Catalog_Block_Navigation class. A new parameter telling if page use http or https should be included in cache key. Cache will then be different for this 2 types of pages. This parameter is added with getSkinUrl method

Default code of getCacheKey

publicfunction getCacheKey()
{
    return'CATALOG_NAVIGATION_'. Mage::app()->getStore()->getId()
        .'_'. Mage::getDesign()->getPackageName()
        .'_'. Mage::getDesign()->getTheme('template')
        .'_'. Mage::getSingleton('customer/session')->getCustomerGroupId()
        .'_'.md5($this->getTemplate().$this->getCurrenCategoryKey());
}

is then replaced by following code

publicfunction getCacheKey()
{
    return'CATALOG_NAVIGATION_'. Mage::app()->getStore()->getId()
        .'_'. Mage::getDesign()->getPackageName()
        .'_'. Mage::getDesign()->getTheme('template')
        .'_'. Mage::getSingleton('customer/session')->getCustomerGroupId()
        .'_'.md5($this->getTemplate().$this->getCurrenCategoryKey())
        .'_'.md5($this->getSkinUrl());/*** FIX IN THIS LINE ***/
}

This is it. You can now use peacefully https on Internet Explorer.

For more details about Magento cache system you can read this article.


Viewing all articles
Browse latest Browse all 10

Trending Articles