Magento - Force Display Full Breadcrumb Path

2013-04-17 02:47:18Damodar Bashyal

 

Today's another issue with magento: not displaying full breadcrumb i.e. categories not included in path. I'm not overriding this time as very little time was assigned to fix this.

copy core file to local: app\code\local\Mage\Catalog\Block\Breadcrumbs.php

On "protected function _prepareLayout()" add below code just before "$title = array();"

$current_category   = Mage::registry('current_category');
$current_product    = Mage::registry('current_product');
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);
	}
}

After this addition of code, you will always get full magento breadcrumb.

Full code looks like this:

/**
 * 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();
}
  •  
      Tips: touching links in iPhone for few seconds gives the options to open a link in new window.
     

 


Bookmark and Share

Great stuff, this worked a treat for me on 1.7.02...thanks!

11/11/13 04:15:39| Nick Annies

thx great useful stuff work for me -> magento 1.7.0.2

15/04/14 01:16:15| nof8ole

Thanks works fine on my magento

11/11/13 04:12:37| Pricio

 

 





Javascript must be enabled to post comment!
TAGS:Magento

 

 

QR Code: Magento - Force Display Full Breadcrumb Path