我尝试将产品类别名称写入 csv 文件。我的要求是 csv 中有三列“父类别名称”和“子类别名称”“子子类别名称”
所以我通过下面的代码获得了产品集合并获得了类别 ID。
$products = Mage::getModel("catalog/product")->getCollection();
foreach ($products as $product) {
$catIds = $product->getCategoryIds();
}
树结构示例:CategoryName -- (Category Id)
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)
所以我得到了 $catIds = array(3,4,5,6,7) 但我想要带有关系的名称。
所以我想要 CSV 文件中的以下输出。
Parent_Cat | Sub_Cat | SubSub_Cat
Main Category | Sub_Cat_1,Sub_Cat_2 | SubSub_Cat_1,SubSub_Cat_2
我尝试了很多方法,但没有成功。
所以请提前帮助实现。
谢谢,
您可以拥有一个包含特定级别上的所有类别的数组(每个键代表一个级别),如下所示:
$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] 将包含包含所有子子类别的名称等
编辑
如果您只想要特定产品的类别,只需更改
$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);
终于我找到了解决方案,所以请检查我的答案。
$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 变量中。