如何获得magento中每个产品的最后一个级别

问题描述 投票:1回答:3

我想在列表页面上为每个产品获取最新级别的类别名称及其产品数量。解释如下 -

Category
                -> Sub-category 1
                          ->Sub-sub-category 11   -> Product 1
                          ->Sub-sub-category 12 
                              -> Sub-sub-sub-category 13  ->Product 2  
                -> Sub-category 2
                          ->Sub-sub-category 21 
                              -> Sub-sub-sub-category 22  ->Product 3 
                          ->Sub-sub-category 23   -> Product 4

我想只获得类别“子子类别11”,“子子类别13”,“子子类别22”和“子子类别23”这些是最后一个级别产品类别1,产品2,产品3,产品4.我在下面找到链接get last level category name of a product in magento但它只获得第三级别类别。

categories product magento-1.9
3个回答
4
投票

有点晚了,但这可以很简单地完成,当你想得到给定产品最深层次的类别时使用这个功能:

public function getProductLastLevelCategory(Mage_Catalog_Model_Product $product)
{
    /** @var Mage_Catalog_Model_Resource_Category_Collection $categories */
    $categories = $product->getCategoryCollection()
        ->addAttributeToSelect('*')
        ->addOrder('level');

   return $categories->getFirstItem();
}

基本集合包含给定产品所属的所有类别,并且技巧依赖于按级别(隐式DESC)对它们进行排序。


1
投票

您好,您可以使用方法getChildrenCount()为您的类别,并检查它是否等于0

if($category->getChildrenCount() == 0) {
  // Do something
 }

0
投票

在我的问题,我尝试这个代码和成功

<?php
$_helper = $this->helper('catalog/category');
$_storeCategories = $_helper->getStoreCategories();
?>

<?php
function getLastCategory($_categories)
{
    $_helper = Mage::helper('catalog/category');
    if (count($_categories) > 0) {
        foreach ($_categories as $_category) {
            $_category = Mage::getModel('catalog/category')->load($_category->getId());
            $_subcategories = $_category->getChildrenCategories();
            if (count($_subcategories) > 0) {
                getLastCategory($_subcategories);
            } else {
                echo($_category->getName()."<br />" );
            }
        }
    }
}

$lastCategory = getLastCategory($_storeCategories);
?>
© www.soinside.com 2019 - 2024. All rights reserved.