Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making consistent breadcrumbs on individual product pages in Magento?

Tags:

magento

In Magento, what we have now is that the breadcrumbs on individual product pages are always changing according to how the user has arrived at the page. For example, if user clicked all the way from top category to sub category and then to the product, the breadcrumbs would be something like "Home >> Top category >> Sub category >> Product".

However if the user arrives at the product page directly, such as from Google queries, the breadcrumbs would simply be "Home >> Product". And it is uncool to be like this.

It would definitely be a user experience improvement by adding categories in the breadcrumbs even when the user arrives at the page from Google. And it would definitely increase PV per visit because users will likely to click on parent categories in the breadcrumbs.

So is there any way to make it consistent and always show the categories path on product pages?

My idea is to edit page/html/breadcrumbs.phtml but I don't know how to add categories to the breadcrumbs only on product pages.

Any help would be appreciated!

======================================

Edit: In a word, I just want categories to appear in the breadcrumbs on product pages no matter how the user arrives on the product page. Doesn't matter which categories, as long as the categories are there.

Anyone got any idea? Is this that hard?

Off the top of my head, I will need to edit the breadcrumbs template and inject the categories in it if there aren't any and it's the product page....but I don't know how and I can't seem to find any relevant solutions to this anywhere...

like image 438
datasn.io Avatar asked Sep 14 '12 02:09

datasn.io


People also ask

How do I add breadcrumbs to product page in Magento 2?

Step 1: Install Magento 2 Breadcrumbs Extension on your website. Step 3: Set the Breadcrumb field to Enable in order to show Breadcrumbs on Magento 2 Product Page.


2 Answers

Replace _toHtml() function in "app/code/core/Mage/Page/Block/Html/Breadcrumbs.php" with this one.

protected function _toHtml() {             

   $cat_id = "";

   if (Mage::registry('current_product')) {
      $product_id = Mage::registry('current_product')->getId();
      $obj = Mage::getModel('catalog/product');
      $_product = $obj->load($product_id); // Enter your Product Id in $product_id

      if ($product_id) {
         $categoryIds = $_product->getCategoryIds();
         $cat_id = $categoryIds[0];
      }

      $category = Mage::getModel('catalog/category')->load($cat_id);
      $cat_name = $category->getName();
      $cat_url =  $this->getBaseUrl().$category->getUrlPath();
   }

   if (is_array($this->_crumbs)) {
      reset($this->_crumbs);
      $this->_crumbs[key($this->_crumbs)]['first'] = true;
      end($this->_crumbs);
      $this->_crumbs[key($this->_crumbs)]['last'] = true;
   }

   if($cat_id) {
      $this->_crumbs['category'.$cat_id] = array('label'=>$cat_name, 'title'=>'', 'link'=>$cat_url,'first'=>'','last'=>'','readonly'=>'');
      ksort($this->_crumbs);
      $home = $this->_crumbs['home'];
      unset($this->_crumbs['home']);
      array_unshift($this->_crumbs,$home);
   }

   $this->assign('crumbs', $this->_crumbs);
   return parent::_toHtml();
}
like image 135
Palanikumar Avatar answered Sep 21 '22 22:09

Palanikumar


You can rewrite product model to alter getProductUrl method. Basically get the first category of that product and append category path before product path.

like image 26
Neeraj Avatar answered Sep 19 '22 22:09

Neeraj