Я использовал следующие коды, но не работал для этого случая:
$_category_detail=Mage::registry('current_category'); echo $_category_detail->getName();
Fatal error: вызов функции-члена getName () для не-объекта в /app/design/frontend/base/default/template/catalog/product/view.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 = ""; } }
Но это работает, только если вы переходите из категории в продукт. Если вы посещаете страницу продукта, то ничего не отображается
Это потому, что продукты могут быть прикреплены к нескольким категориям. В вашей ситуации, когда вы посещаете страницу продукта, указанную на странице категории, ваш сеанс содержит информацию о категории. Но если вы сразу посетите страницу продукта, Magento не может знать, из какой категории вы пришли, поэтому она не может показать вам определенную категорию, потому что ваш продукт может иметь несколько категорий.
Но в вашей ситуации, если ваши продукты прикреплены только к одной категории, вы можете использовать этот код, он показывает название продукта первой категории;
$categoryIds = $_product->getCategoryIds(); if(count($categoryIds) ){ $firstCategoryId = $categoryIds[0]; $_category = Mage::getModel('catalog/category')->load($firstCategoryId); echo $_category->getName(); }
<?php $_category_detail=Mage::registry('current_category'); echo $_category_detail->getName(); //gives current category name echo $_category_detail->getId(); //gives current category id ?>