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

Ajay Patel
quelle
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);
}
hiep nguyen
quelle
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();
}
Arunendra
quelle
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;
MageWorx
quelle
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();

}
Larp
quelle
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);
Prashant Valanda
quelle
Jede Hilfe mit meinem eigenen Beitrag magento.stackexchange.com/q/284557/57334 @Prashant Valanda
zus