Showing posts with label Magento Display Full Breadcrumb Path on product page. Show all posts
Showing posts with label Magento Display Full Breadcrumb Path on product page. Show all posts

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();

}