我正在使用下面的代码获取与当前页面处于同一级别的类别列表(通过列出此类别的父级的子类别)。平面类别关闭时效果很好。一旦我启用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>
是的,我刷新了缓存和索引。
答案 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();
......无论是打开还是关闭“平面目录”,它都能正常工作。