最新消息:Excel无乱码转CSV,由于工作原因很少更新博客和回复大家的评论,非常抱歉。

Magento 修正来自首页的产品页面包屑导航(Breadcrumb)

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

修正的方法,找到文件app/code/core/Mage/Catalog/Helper/Data.php

复制一份到local代码池

app/code/local/Mage/Catalog/Helper/Data.php
在函数getBreadcrumbPath的开始部分,加上如下的代码逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public function getBreadcrumbPath()
    {
        if (!$this->_categoryPath) {
            $path array();
            //add by date 2013-04-07 产品页面包屑导航修正
            if ($this->getProduct() && !$this->getCategory()) { 
                $_categoryIds $this->getProduct()->getCategoryIds();
                rsort($_categoryIds);
                if ($_categoryId $_categoryIds[0]) { 
                    $_category = Mage::getModel('catalog/category')->load($_categoryId);
                    Mage::register('current_category'$_category); 
                
            }
            //end date 2013-04-07
            
            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;
    }

首先判断当前是否是产品页,如果是并且没有Category信息,就获取产品所属的Category IDs,Magento中一个产品可以加入多个Category中,现在也不管那么多了,只挑出其中一个幸运的Category作为current_category。

转载请注明:嗨酷哥,有你更酷! » Magento 修正来自首页的产品页面包屑导航(Breadcrumb)

与本文相关文章

发表我的评论

取消评论
表情 插代码

Hi,您需要填写昵称和邮箱!

  • 必填项
  • 必填项

网友评论1条  本站回复1

  1. :mrgreen: 本站启用黑名单了。

    hicoogle2013-04-11 20:07 回复
    • 今天测试的,还是显示不了啊? 1.7版本

      jay2015-08-01 19:21 回复