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