Magento Flat Catalog的子类别列表

时间:2013-09-05 20:19:56

标签: magento

我正在使用下面的代码获取与当前页面处于同一级别的类别列表(通过列出此类别的父级的子类别)。平面类别关闭时效果很好。一旦我启用Flat Categories,H2就能正常工作,但列表会更改以显示 root的子类别,而不是此页面的父级子类别。我做错了什么,为什么这样做?

<?php
$_category  = $this->getCurrentCategory();
$parentCategoryId = $_category->getParentId();
$collection = Mage::getModel('catalog/category')->getCategories($parentCategoryId);
$helper     = Mage::helper('catalog/category');
$parentCategory   = Mage::getModel('catalog/category')->load($parentCategoryId);

?>
<h2><?php echo $parentCategory->getName(); ?></h2>

<ul>
<?php foreach ($collection as $cat):?>
        <?php if($_category->getIsActive()): ?>
            <li <?php
                if ($cat->getId() == $_category->getId()) {
                    echo 'class="current"';
                }
            ?>>
                <a href="<?php echo $helper->getCategoryUrl($cat);?>"><?php echo $cat->getName();?></a>
            </li>
        <?php endif; ?>
    <?php endforeach;?>
</ul>

是的,我刷新了缓存和索引。

1 个答案:

答案 0 :(得分:2)

我不完全知道为什么 - &gt; getCategories($ id)不是“平坦安全”,但使用Stefan的建议帮助我找到了替代方法。

我在顶部的新线条看起来像这样:

$_category  = $this->getCurrentCategory();
$parentCategoryId = $_category->getParentId();
$helper     = Mage::helper('catalog/category');
$parentCategory   = Mage::getModel('catalog/category')->load($parentCategoryId);
$collection = $parentCategory->getChildrenCategories();

......无论是打开还是关闭“平面目录”,它都能正常工作。