Wie erhalte ich die Kategorie-ID des aktuellen Produkts?


7

Ich habe die aktuelle Produktkategorie-ID auf der Produktdetailseite erhalten. Ich habe eine Methode angewendet wie:

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

aber es funktioniert nicht wie ich will.

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

aber es gibt manchmal diesen Fehler zurück

 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 

Geben Sie hier die Bildbeschreibung ein


current product category id on product detailsbedeutet, dass die Kategorie von wo aus zur Produktdetailseite führt?
Amit Bera

Entschuldigung, es ist mein Fehler. Ich habe gesetzt -> addCategoryFilter ($ cat) aber nicht festes Ergebnis.
Ajay Patel

Versuchen Sie $ cat = Mage :: getModel ('catalog / category') -> load (array_pop ($ ids));
Siarhey Uchukhlebau

Möglicherweise benötigen Sie einen anderen Filter $ products-> addFieldToFilter ('category_id', array ('in' => $ catIds));
Siarhey Uchukhlebau

hier Category_ids leer @SiarheyUchukhlebau.
Ajay Patel

Antworten:


9

Da 1 Produkt in mehreren Kategorien gespeichert werden kann, also beim Anruf

$categoryIds = $_product->getCategoryIds();

es wird ein Array.

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

4

Sie können den folgenden Code verwenden:

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

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

Produkte können mehreren Kategorien zugeordnet werden. Wenn Sie in Ihrer Situation eine Produktseite besuchen, auf die von einer Kategorieseite verwiesen wird, enthält Ihre Sitzung Kategoriedaten. Wenn Sie jedoch die Produktseite direkt besuchen, kann Magento nicht wissen, aus welcher Kategorie Sie stammen, sodass Ihnen keine bestimmte Kategorie angezeigt werden kann, da Ihr Produkt mehrere Kategorien haben kann. Wenn Ihre Produkte in Ihrer Situation jedoch nur einer Kategorie zugeordnet sind, können Sie den obigen Code verwenden. Der Name der ersten Kategorie des Produkts wird angezeigt.
Kaka

@ Kaka Es wird funktionieren, wenn Sie direkt Produktseite besuchen. Ich habe es überprüft
Arunendra

Bitte beziehen Sie sich auf die aktualisierte Frage.
Ajay Patel

@Arunendra Wenn ja, erhalten Sie mehrere Kategorie-IDs, wenn dieses Produkt in mehreren Kategorien angehängt ist, oder? oder Sie erhalten einzelne Kategorie ID?
Kaka

@Arunendra könnten Sie mir bitte mit meinem eigenen Beitrag helfen magento.stackexchange.com/q/284557/57334
zus

2

Wenn Sie nur die aktuelle Kategorie auf einer Produktseite abrufen müssen, können Sie dies am einfachsten aus der Registrierung abrufen:

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

Um eine ID zu erhalten, verwenden Sie:

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

2

Versuche dies:

// Dadurch werden die Informationen zum aktuellen Produkt abgerufen.

$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();

}

1
$_product = Mage::getModel('catalog/product')->load(prodId);
$ids = $_product->getCategoryId();
var_dump($ids); //this is category id

Der folgende Code ist falsch:

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

Jede Hilfe mit meinem eigenen Beitrag magento.stackexchange.com/q/284557/57334 @Prashant Valanda
zus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.