Tuesday 31 March 2015

Magento - Display Full Breadcrumb Path on product page

Copy core file to local: 


app\code\local\Mage\Catalog\Block\Breadcrumbs.php


Change "protected function _prepareLayout()" function from following code:



/** * Preparing layout * * @return Mage_Catalog_Block_Breadcrumbs */


protected function _prepareLayout()

{ 

if ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) { $breadcrumbsBlock->addCrumb('home', array( 'label'=>Mage::helper('catalog')->__('Home'),
'title'=>Mage::helper('catalog')->__('Go to Home Page'),
'link'=>Mage::getBaseUrl()
));


// sometimes magento can't get category associated with a product 

// so the full breadcrumb is not shown // this is a hack to fix the issue. 

$current_category   = Mage::registry('current_category');
$current_product    = Mage::registry('current_product');


// let's check if magento knows what current category is 

// if it doesn't know, let's feed this info to it's brain :) 

if(!$current_category && $current_product){
$categories = $current_product->getCategoryCollection()->addAttributeToSelect('name')->setPageSize(1);
foreach($categories as $category) { Mage::unregister('current_category');
Mage::register('current_category', $category);
}
}
$title = array(); $path  = Mage::helper('catalog')->getBreadcrumbPath();
foreach ($path as $name => $breadcrumb) { $breadcrumbsBlock->addCrumb($name, $breadcrumb);
$title[] = $breadcrumb['label'];
}
if ($headBlock = $this->getLayout()->getBlock('head')) { $headBlock->setTitle(join($this->getTitleSeparator(), array_reverse($title))); }
}
return parent::_prepareLayout();

}

2 comments:

  1. Its a very nice blog for the beginners and in well form with the full of informations. Thanks for the post, keep updating.
    lycopene supplement

    ReplyDelete