从搜索结果中进入Product面包屑也包含Category Path

Magento产品页面的面包屑导航很怪异:如果从Category产品列表中进入Product,则面包屑导航中含有Category Path; 否则,当从首页,或搜索结果中,或者其他什么地方进入,则缺少之。我想,可能是Magento支持一个产品放入多个Category的缘故吧。不管怎么 样,产品页中缺少了Category Path,用户体验不大好。

修正的方法,找到文件

app/code/core/Mage/Catalog/Helper/Data.php

在函数getBreadcrumbPath的开始部分,加上如下的代码逻辑:
if ($this->getProduct() && !$this->getCategory()) {  
       $_categoryIds = $this->getProduct()->getCategoryIds();  
  
       if ($_categoryId = $_categoryIds[0]) {  
          $_category = Mage::getModel('catalog/category')->load($_categoryId);  
          Mage::register('current_category', $_category);  
       }  
    }  
最后 getBreadcrumbPath方法如下:
/**
     * Return current category path or get it from current category
     * and creating array of categories|product paths for breadcrumbs
     *
     * @return string
     */
    public function getBreadcrumbPath()
    {
        if ($this->getProduct() && !$this->getCategory()) {
            $_categoryIds = $this->getProduct()->getCategoryIds();

            if ($_categoryId = $_categoryIds[0]) {
                $_category = Mage::getModel('catalog/category')->load($_categoryId);
                Mage::register('current_category', $_category);
            }
        }

        if (!$this->_categoryPath) {

            $path = array();
            if ($category = $this->getCategory()) {
                $pathInStore = $category->getPathInStore();
                $pathIds = array_reverse(explode(',', $pathInStore));

                $categories = $category->getParentCategories();

                // add category path breadcrumb
                foreach ($pathIds as $categoryId) {
                    if (isset($categories[$categoryId]) && $categories[$categoryId]->getName()) {
                        $path['category'.$categoryId] = array(
                            'label' => $categories[$categoryId]->getName(),
                            'link' => $this->_isCategoryLink($categoryId) ? $categories[$categoryId]->getUrl() : ''
                        );
                    }
                }

            }

            if ($this->getProduct()) {

                $path['product'] = array('label'=>$this->getProduct()->getName());
            }
            
            $this->_categoryPath = $path;
        }
        return $this->_categoryPath;
    }
本文转载,测试有效,更多查看:http://justcoding.iteye.com/blog/1681846
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值