php 如何在magento中获取当前产品的类别名称(在产品详细信息页面上)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18053742/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to get category name of current product (on product detail page) in magento
提问by user2652255
I used following codes but didn't work for this case:
我使用了以下代码,但不适用于这种情况:
$_category_detail=Mage::registry('current_category');
echo $_category_detail->getName();
got Fatal error:Call to a member function getName() on a non-object in /app/design/frontend/base/default/template/catalog/product/view.phtml
出现致命错误:在 /app/design/frontend/base/default/template/catalog/product/view.phtml 中的非对象上调用成员函数 getName()
we make some filters and use below mention code in head.phtml:
我们制作了一些过滤器并在 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 = ""; }
}
But this only works if you go from a category to a product. If you visit the product page directly nothing is being displayed
但这仅在您从类别转到产品时才有效。如果您直接访问产品页面,则不会显示任何内容
回答by muhammedv
It's because products can be attached to multiple categories. In your situation, when you visit a product page referred from a category page, your session has category information. But if you visit directly product page, Magento can not know which category you came from, so it can not show you a specific category, because your product can have multiple categories.
这是因为产品可以附加到多个类别。在您的情况下,当您访问从类别页面引用的产品页面时,您的会话具有类别信息。但是如果您直接访问产品页面,Magento 无法知道您来自哪个类别,因此它无法显示特定类别,因为您的产品可以有多个类别。
But in your situation, if your products are attached only one category, you can use this code, it shows first category name of product;
但是在您的情况下,如果您的产品只附加一个类别,则可以使用此代码,它显示产品的第一个类别名称;
$categoryIds = $_product->getCategoryIds();
if(count($categoryIds) ){
$firstCategoryId = $categoryIds[0];
$_category = Mage::getModel('catalog/category')->load($firstCategoryId);
echo $_category->getName();
}
回答by Amit Naraniwal
<?php
$_category_detail=Mage::registry('current_category');
echo $_category_detail->getName(); //gives current category name
echo $_category_detail->getId(); //gives current category id
?>