我启用了“使用平面目录类别”& “使用平面目录产品”至“是”以获得更好的性能。但启用此选项后,我之前获得所有子类别列表的cms页面之一已不再有效。 在启用平面数据之前使用我获取子类别的代码是:
$_category = Mage::getModel('catalog/category')->load(CATEGORY-ID);
$_categories = $_category->getCollection()->addAttributeToSelect(array('url_key','name','image','all_children','is_anchor','description'))
->addAttributeToFilter('is_active', 1)
->addIdFilter($_category->getChildren())
->setOrder('position', 'ASC')
->joinUrlRewrite();
注意:我已经检查过,我的两个平面数据表都已成功填充。如果我将“使用平面目录类别”选项更改为“否”,此代码仍然有效。 现在,应该是什么代码来获取类别列表及其子类别,因为它可以从“catalog_category_flat_store_ *”表中提取数据?
答案 0 :(得分:4)
我在这里使用了这段代码
$_category = Mage::getModel('catalog/category')->load(CATEGORY-ID);
$_categories = $_category
->getCollection()
->addAttributeToSelect(array('name', 'image', 'description'))
->addIdFilter($_category->getChildren());
foreach ($_categories as $_category):
echo $_category->getName();
endforeach;
答案 1 :(得分:1)
只需删除过滤器并检查。
- > addAttributeToFilter('is_active',1) - > addIdFilter($ _类别 - >的getChildren())
也进行getselect并检查生成的sql查询。
以上两个将提供进一步的提示。请在此处进行进一步评论。