我尝试将产品类别名称写入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)
我尝试了很多方法,但没有运气。
所以请提前帮助实现。
谢谢,
答案 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变量中。