Magento:显示当前类别树的特定类别

时间:2014-04-03 13:09:44

标签: php magento magento-1.7

我正在尝试在我的magento商店中显示一个菜单,该菜单仅显示我所在的当前类别树的3级类别。

我的类别树分为两个路径:

  • 默认
    • 塞尔
      • 第1项
      • 第2项
    • 维修
      • 第1项
      • 第2项

当我处于任何销售类别时,我只想显示销售的第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): ?>

感谢。

国防部

1 个答案:

答案 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();