現在の製品のカテゴリIDを取得するにはどうすればよいですか?


7

製品詳細ページで現在の製品カテゴリIDを取得しました。私はいくつかの方法を使用しました:

$_product = Mage::getModel('catalog/product')->load(prodId);
$ids = $_product->getCategoryId();
$cat = Mage::getModel('catalog/product')->setId($ids);

しかし、私が望むように機能しません。

$products = Mage::getResourceModel('reports/product_collection')
        ->addAttributeToSelect('*')     
        ->setStoreId($storeId)
        ->addStoreFilter($storeId)
        ->addViewsCount()
        ->addCategoryFilter($cat)
        ->setPageSize($productCount); 

しかし、そのエラーは時々このエラーを返します

 Fatal error: Call to a member function getId() on a non-object in /var/www/html/app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php on line 719 

ここに画像の説明を入力してください


current product category id on product detailsそのカテゴリはどこから製品の詳細ページに行くのですか?
アミットベラ

すみません、私の間違いです。-> addCategoryFilter($ cat)を設定しましたが、結果は修正されていません。
Ajay Patel

$ cat = Mage :: getModel( 'catalog / category')-> load(array_pop($ ids));を試してください。
Siarhey Uchukhlebau

別のフィルターが必要になる可能性があります$ products-> addFieldToFilter( 'category_id'、array( 'in' => $ catIds));
Siarhey Uchukhlebau

ここCategory_ids空@SiarheyUchukhlebau。
Ajay Patel

回答:


9

1つの商品は複数のカテゴリに保存できるため、電話をかけると

$categoryIds = $_product->getCategoryIds();

配列になります。

foreach($categoryIds as $id) {
  $cat = Mage::getModel('catalog/category')->load($id);
}

4

以下のコードを使用できます:

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

    echo $_category->getName();
    echo $_category->getId();
}

製品は複数のカテゴリに添付できます。あなたの状況では、カテゴリページから参照されている製品ページにアクセスすると、セッションにカテゴリ情報があります。ただし、製品ページに直接アクセスすると、Magentoはどのカテゴリから来たのかを認識できません。そのため、製品に複数のカテゴリがある可能性があるため、特定のカテゴリを表示できません。しかし、あなたの状況では、あなたの製品が1つのカテゴリーのみに添付されている場合、上記のコードを使用することができ、それは製品の最初のカテゴリー名を表示します。
カカ

@カカ直接製品ページにアクセスすれば動作します。確認しました
Arunendra 2016年

更新された質問を参照してください。
Ajay Patel

@Arunendraもしそうなら、この製品が複数のカテゴリに添付されている場合、複数のカテゴリIDを取得しますよね?または、単一のカテゴリIDを取得しますか?
カカ


2

製品ページで現在のカテゴリを取得するだけの場合は、レジストリから取得するのが最も簡単な方法です。

echo Mage::registry('current_category') ? Mage::registry('current_category')->getName() : 'No category';

IDを取得するには、以下を使用します。

$catid = Mage::registry('current_category') ? Mage::registry('current_category')->getId() : null;

2

これを試して:

//これは現在の製品の情報を取得します。

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

$prodID = $product->getId();

$_product = Mage::getModel('catalog/product')->load($prodID);

$categoryIds = $_product->getCategoryIds();

foreach($categoryIds as $categoryIds1) {

$_category = Mage::getModel('catalog/category')->load($categoryIds1);

//get all category ID in the current product.

echo $category_id = $_category->getId();

//get all the Category Name of the Current Product.

echo $category_name = $_category->getName();

}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.