面包屑中缺少Magento产品类别

时间:2013-07-17 17:23:25

标签: magento breadcrumbs

在我的Magento网站的主页上,我使用以下代码添加最新产品块

{{block type="catalog/product_list" category_id="2" template="catalog/product/random.phtml"}}

点击最新产品时,有些可以使用(有效的那些显示完整的面包屑),而其他产品会导致错误: 致命错误:在/var/www/vhosts/riderseyewear.net/httpdocs/app/design/frontend/fortium/default/template/page/1column-product.phtml上的非对象上调用成员函数getName()第80行

此处更详细地描述了错误http://i.imgur.com/RrG3ixU.png

在那个1column-product.phtml文件中,我进入了第80行并更改了

$currentcat = Mage::registry('current_category')->getName();

$currentcat = Mage::registry('current_product')->getName();

更改此行会删除错误。但是,现在,在单击产品时,类别名称不会显示在面包屑中。面包屑显示HOME / PRODUCT_NAME而不是HOME / CATEGORY_NAME / PRODUCT_NAME

如何在没有收到致命错误的情况下显示完整的痕迹?

2 个答案:

答案 0 :(得分:4)

请点击此链接http://dltr.org/blog/magento/381/Magento-Force-Display-Full-Breadcrumb-Path。 完美适合我。如果我可以帮助你,请告诉我。

答案 1 :(得分:0)

我知道这已经很老了,但我还是想分享我的解决方案,因为它不会覆盖/克隆任何核心文件。

  1. 在自定义模块中,将以下内容添加到config.xml

    <config>
        ...
        <frontend>
            <events>
                <catalog_controller_product_init>
                    <observers>
                        <breadcrumb_categorypath_product_init>
                            <type>singleton</type>
                            <class><Your Namespace>_<Your Module>_Model_Observer</class>
                            <method>fullBreadcrumbCategoryPath</method>
                        </breadcrumb_categorypath_product_init>
                    </observers>
                </catalog_controller_product_init>
            </events>
        </frontend>
    </config>
    
  2. Observer.php

  3. 中创建/app/code/local/<Your Namespace>/<Your Module>/Model/
  4. 将以下内容添加到Observer.php

    class <Your Namespace>_<Your Module>_Model_Observer {
        public function fullBreadcrumbCategoryPath(Varien_Event_Observer $observer) {
            $currentProduct = Mage::registry( 'current_product' );
            $storeRootCatId     = Mage::app()->getStore()->getRootCategoryId();
    
            if( $currentProduct ) {
                $categories = $currentProduct->getCategoryCollection()->addAttributeToSelect( 'name' );
                foreach( $categories as $_category ) {
                    $catIdPath = '1/' . $storeRootCatId . '/';
                    if( 0 === strpos($_category->getData('path'), $catIdPath) ) {
                        Mage::unregister( 'current_category' );
                        Mage::register( 'current_category', $_category );
                    }
                }
            }
        }
    }
    
  5. 你应该好好去。