требуется название категории 2-го уровня в magento

#php #magento #categories #catalog

#php #magento #Категории #каталог

Вопрос:

  $product = Mage::getModel('catalog/product')->load($item->getProductId());
 $pro = $product->getCategoryName(); //category id is fetched here
 $category = Mage::getModel('catalog/category')->load($pro);
  
  • Корневой каталог
    • Мебель
    • Электроника
      • Компьютер
        • Процессор
    • Одежда

Поэтому, когда я получаю процессор в качестве названия категории, я хочу отобразить его название категории уровня 2, которое является электроникой

Ответ №1:

получил решение, приведенный ниже код получит текущую категорию, а затем продолжит получать родительскую категорию, пока не получит самую высокую категорию (но не корневую категорию)

 $product = Mage::getModel('catalog/product')->load($item->getProductId());
                    $pro = $product->getCategoryName(); //category id is fetched here

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

                    if ($category)
                    {
                        while($category->getLevel() != 2)
                        {
                            $category = $category->getParentCategory();
                            if (!$category)
                            {
                                break;
                            }
                        }
                        if ($category)
                        {
                            echo $category->getName();
                        }
                        else
                        {
                            echo 'Cannot find parent category';
                        }
                    }
  

Ответ №2:

 $CategoryCollection=Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('level',2);
  

Ответ №3:

Вы можете использовать это

 $categories = Mage::getModel('catalog/category')
                ->getCollection()
                ->addAttributeToSelect('*')
                ->addIsActiveFilter()
                ->addAttributeToFilter('level',2)
  

или

 <?php

$_category = Mage::registry('current_category');

$_category = $this->getCurrentCategory();

// Category Name

echo $_category->getName();

// Category Level

echo $_category->getLevel();

?>
  

Ответ №4:

Вы можете использовать что-то вроде этого

 public function get_cat_from_product($prod_id,$level){

    $categoryIds = Mage::getModel('catalog/product')->load($prod_id)->getCategoryIds();

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

        echo $_category->getName();
    }else{
        return null;
    }
}