显示产品集合中的父类别和子类别以及子子类别名称

时间:2016-03-10 17:19:36

标签: magento magento-1.9

我尝试将产品类别名称写入csv文件。我的要求是在csv“父类别名称”和“子类别名称”“子类别名称”中有三列

所以我得到了产品系列,并通过以下代码获得了类别ID。

xdmp:database-restore

示例树结构:CategoryName - (Category Id)

$products = Mage::getModel("catalog/product")->getCollection();

foreach ($products as $product) {
   $catIds = $product->getCategoryIds();
}

所以我得到了$ catIds =数组(3,4,5,6,7),但我想要名字与关系。

所以我想在CSV文件中输出以下内容。

Main Category --(3) 
   Sub_Cat_1 (4)  
      SubSub_Cat_1 (6)
      SubSub_Cat_2 (7)
      SubSub_Cat_3 (8)

    Sub_Cat_2(5)
      SubSub_Cat_4 (9)
      SubSub_Cat_5 (10)

我尝试了很多方法,但没有运气。

所以请提前帮助实现。

谢谢,

2 个答案:

答案 0 :(得分:1)

你可以拥有一个包含特定级别所有类别的数组(每个键代表一个级别),如下所示:

    $categoriesLevels = array();
    $categoryModel = Mage::getModel('catalog/category');
    $tree = $categoryModel->getTreeModel();
    $tree->load();
    $catIds = $tree->getCollection()->getAllIds();
    foreach ($catIds as $catId){
        $category = Mage::getModel('catalog/category')->load($catId);
        $catLevel = $category->getLevel();
        if (!isset($categoriesLevels[$catLevel])) {
            $categoriesLevels[$catLevel] = array();
        }
        $categoriesLevels[$catLevel] = array_merge($categoriesLevels[$catLevel],array($category->getName()));
    }
    $categoriesLevels = array_filter($categoriesLevels);

所以$ categoriesLevels [0]将包含根目录的名称,$ categoriesLevels [1]将包含默认类别的名称,$ categoriesLevels [2]将包含所有子类别的名称,$ categoriesLevels [3] ]将包含所有SubSubcategories的名称等。

修改

如果您只想要特定产品的类别,只需更改获得$catIds的方式:

    $categoriesLevels = array();
    $catIds = $product->getCategoryIds();
    foreach ($catIds as $catId){
        $category = Mage::getModel('catalog/category')->load($catId);
        $catLevel = $category->getLevel();
        if (!isset($categoriesLevels[$catLevel])) {
            $categoriesLevels[$catLevel] = array();
        }
        $categoriesLevels[$catLevel] = array_merge($categoriesLevels[$catLevel], array($category->getName()));
    }
    $categoriesLevels = array_filter($categoriesLevels);

答案 1 :(得分:0)

最后我找到了解决方案,所以请检查一下我的答案。

$products = Mage::getModel("catalog/product")->getCollection();
$products->addAttributeToFilter('status', 1);
$products->addAttributeToSelect('*');

$cats = $product->getCategoryIds();
$cat_lel_one = array();
$cat_lel_two = array();
$cat_lel_third = array();
   foreach ($cats as $category_id) {
      $_cat = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($category_id);

      $cat_info = $_cat->getData();
      if($cat_info['level'] == 1){
         $cat_lel_one[] = $_cat->getName();
      }
      if($cat_info['level'] == 2){
         $cat_lel_two[] = $_cat->getName();
      }
      if($cat_info['level'] == 3){
         $cat_lel_third[] = $_cat->getName();
      }
   }
  

$ cat_lel_one变量中的第一级别类别。我的第二级   $ cat_lel_two变量中的类别。我的第三级别   在$ cat_lel_third变量中。