如何在magento中获取当前产品的类别名称(在产品详细信息页面上)

时间:2013-08-05 08:32:14

标签: php magento magento-1.5

我使用了以下代码,但在这种情况下不起作用:

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

得到致命错误:在/app/design/frontend/base/default/template/catalog/product/view.phtml上调用非对象上的成员函数getName()

我们制作一些过滤器并在head.phtml中使用下面提到的代码:

$is_product = Mage::registry('product');

if($is_product){ 

  if(is_object(Mage::registry('current_category'))){ 
    $category_name = Mage::registry('current_category')->getName(); 
  }
  else{ $category_name = ""; }

}

但这只适用于从类别到产品的情况。如果您直接访问产品页面,则不会显示任何内容

2 个答案:

答案 0 :(得分:22)

这是因为产品可以附加到多个类别。在您的情况下,当您访问从类别页面引用的产品页面时,您的会话具有类别信息。但是,如果您直接访问产品页面,Magento无法知道您来自哪个类别,因此无法向您显示特定类别,因为您的产品可能有多个类别。

但在您的情况下,如果您的产品只附加一个类别,则可以使用此代码,它会显示产品的第一个类别名称;

        $categoryIds = $_product->getCategoryIds();

        if(count($categoryIds) ){
            $firstCategoryId = $categoryIds[0];
            $_category = Mage::getModel('catalog/category')->load($firstCategoryId);

            echo $_category->getName();
        }

答案 1 :(得分:3)

Notice: Undefined variable: m_alb.