我想以编程方式在我的模块的数据文件夹中创建一个类别。 “平面类别”选项已启用。
当我尝试创建类似的类别时:
$category
->setStoreId(0)
->setName('My category')
->setUrlKey('club-campaigns')
->setPath($rootCategory->getPath())
->setIsActive(1)
->setIsAnchor(1)
->setIncludeInMenu(1)
->addData($data)
->setCustomDesignApply(1)
->save();
我收到一条错误消息,指出catalog_category_flat不存在。好的,所以我知道平面类别信息保存在catalog_category_flat_store_storenumber表中。我查看了数据库,我有以下表格:
catalog_category_flat_store_1
catalog_category_flat_store_2
catalog_category_flat_store_3
catalog_category_flat_store_4
catalog_category_flat_store_5
catalog_category_flat_store_6
我想为商店6创建一个类别。好的,现在如果我喜欢这个:
$category
->setStoreId(6)
->setName('My category')
->setUrlKey('club-campaigns')
->setPath($rootCategory->getPath())
->setIsActive(1)
->setIsAnchor(1)
->setIncludeInMenu(1)
->addData($data)
->setCustomDesignApply(1)
->save();
创建的类别没有错误,它设置了catalog_category_flat_store_6中的信息,但是如果我去管理>管理类别并且看不到我的类别被创建。
我认为当我创建一个类别时,我应该设置admin(0)的te商店ID,这样我就可以在管理面板中看到它但是我得到了上面的错误,如果我用商店6创建我就不会在管理员中看到它。我真的被卡住了。
如何以编程方式正确创建我的类别而没有问题?
答案 0 :(得分:4)
动态创建类别
$category = Mage::getModel('catalog/category');
$category->setStoreId(Mage::app()->getStore()->getId());
$cat['name'] = "Custom Category Name here";
$cat['path'] = "1/2/30"; //parent relationship..
$cat['description'] = "categorie's description";
$cat['is_active'] = 1;
$cat['is_anchor'] = 0; //for layered navigation
$cat['page_layout'] = 'two_columns_left';
$cat['url_key'] = "custom-category"; //url to access this category
$cat['image'] = "custom-category.jpg";
$category->addData($cat);
$category->save();
然后动态重新编制catalog_category_flat:
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_category_flat');
$process->reindexEverything();