程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Magento 修正來自首頁的產品頁面包屑導航

Magento 修正來自首頁的產品頁面包屑導航

編輯:關於PHP編程

本文章來給各位朋友介紹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的開始部分,加上如下的代碼邏輯:

 

 代碼如下 復制代碼 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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved