1

我已将“使用平面目录类别”和“使用平面目录产品”启用为“是”以获得更好的性能。但是在启用此选项后,我之前获取所有子类别列表的 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_*”表中提取数据?

4

2 回答 2

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;
于 2013-03-30T01:23:46.227 回答
1

只需删除过滤器并检查。

->addAttributeToFilter('is_active', 1) ->addIdFilter($_category->getChildren())

还做一个 getselect 并检查生成了什么 sql 查询。

以上两个将提供进一步的提示。在此处发布以供进一步评论。

于 2013-03-28T04:03:17.077 回答