web-dev-qa-db-ja.com

Magentoで現在の製品のカテゴリ名を(製品の詳細ページで)取得する方法

次のコードを使用しましたが、この場合は機能しませんでした。

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

got 致命的なエラー: /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 = ""; }

}

ただし、これは、カテゴリから製品に移動する場合にのみ機能します。製品ページに直接アクセスした場合、何も表示されていません

6
user2652255

これは、商品を複数のカテゴリに関連付けることができるためです。あなたの状況では、カテゴリページから参照される製品ページにアクセスすると、セッションにカテゴリ情報が含まれます。ただし、製品ページに直接アクセスすると、Magentoはどのカテゴリから来たのかわからないため、製品に複数のカテゴリが含まれる可能性があるため、特定のカテゴリを表示できません。

ただし、状況によっては、商品が1つのカテゴリのみに関連付けられている場合、このコードを使用できます。このコードには、商品の最初のカテゴリ名が表示されます。

        $categoryIds = $_product->getCategoryIds();

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

            echo $_category->getName();
        }
22
muhammedv
  <?php 
    $_category_detail=Mage::registry('current_category');
    echo  $_category_detail->getName(); //gives current  category name
    echo $_category_detail->getId(); //gives current category id
?>
3
Amit Naraniwal