我正在尝试在我的magento商店中显示一个菜单,该菜单仅显示我所在的当前类别树的3级类别。
我的类别树分为两个路径:
当我处于任何销售类别时,我只想显示销售的第3级,反之亦然,当我是任何维修类别时。
以下代码显示3级类别,但仅适用于修复,无论我碰巧在哪个类别。
<?php
$layer = Mage::getSingleton('catalog/layer');
/* @var $category Mage_Catalog_Model_Category */
$categories = $layer->getCurrentCategory();
$categories = Mage::getModel('catalog/category')
->setStoreId(Mage::app()->getStore()->getId())
->getCollection()
// magic is prepared here..
->addAttributeToSelect('*')
// then the magic happens here:
->addAttributeToFilter('level', array('eq' => 3))
->load();
?>
<?php foreach ($categories as $cat): ?>
感谢。
国防部
答案 0 :(得分:0)
我通过使用parentid过滤找到了解决方案,这是我添加的代码:
$_cat = new Mage_Catalog_Block_Navigation();
$curent_cat = $_cat->getCurrentCategory();
$curent_cat_id = $curent_cat->getId();
$parentId=Mage::getModel('catalog/category')->load($curent_cat_id)->getParentId();
然后我使用添加属性过滤器过滤parentId:这只显示3级类别,它们是此类别的parentid(根ID)的子类别。 (格式编辑)
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('level', array('eq' => 3))
->addAttributeToFilter('parent_id', array('eq' => $parentId))
->load();