Php 如何在Magento的自定义菜单下获取子类别

Php 如何在Magento的自定义菜单下获取子类别,php,magento,drop-down-menu,magento-1.7,Php,Magento,Drop Down Menu,Magento 1.7,我已经成功地为我需要的每个特定类别创建了一个自定义下拉菜单,但其中一个类别需要在子类别中加载子类别,我无法让它工作 没有“子类别中的子类别”的工作代码如下所示,但我需要了解如何在此代码上添加第三级 <!-- Vending --> <?php $main = Mage::getModel('catalog/category')->load(355) ?> <li class="eight"><a href="<?php echo $ma

我已经成功地为我需要的每个特定类别创建了一个自定义下拉菜单,但其中一个类别需要在子类别中加载子类别,我无法让它工作

没有“子类别中的子类别”的工作代码如下所示,但我需要了解如何在此代码上添加第三级

 <!-- Vending -->
 <?php $main = Mage::getModel('catalog/category')->load(355) ?>
 <li class="eight"><a href="<?php echo $main->getUrl() ?>"><?php echo $main->getName(); ?></a>
 <?php $children = Mage::getModel('catalog/category')->getCategories(355); ?>
 <ul class="nav_static">
 <?php foreach ($children as $category): ?>
 <li>
 <a href="<?php echo $category->getRequestPath(); ?>">
 <?php echo $category->getName(); ?>
 </a>
 </li>
 <?php endforeach; ?>
 </ul>
 </li>
 <!-- END - Vending -->


  • 正如我在中所建议的,您必须为第二级类别加载类别对象:

    $cat = Mage::getModel('catalog/category')->load($category->getEntityId());
    
    然后可以通过执行

    $children = $cat->getChildrenCategories();
    
    $
    children
    变量是一个类型为
    Mage\u Catalog\u Model\u Resource\u Category\u collection
    的集合,您可以遍历它以输出下一级类别

    我认为,如果您首先在$main上调用getChildrenCategories(),您的代码可以得到一些改进。您不必在循环中加载每个孩子,这可能会影响性能。取而代之的是使用这种方法(实际上,递归调用可以进一步改进这种方法,但这种设置将包括创建额外的块,这对于这种特殊情况来说可能太麻烦了):

    
    

  • 谢谢,但我无法让它工作。这次我没能把它和我的代码放在一起。你能给我举个例子吗?请看我答案的补充部分,可能会有所帮助。
     <?php $main = Mage::getModel('catalog/category')->load(355) ?>
     <li class="eight"><a href="<?php echo $main->getUrl() ?>"><?php echo $main->getName(); ?></a>
     <?php $children = $main->getChildrenCategories(); ?>
     <ul class="nav_static">
     <?php foreach ($children as $category): ?>
     <li>
     <a href="<?php echo $category->getUrl(); ?>">
     <?php echo $category->getName();
    
     $subCategories = $category->getChildrenCategories();
     foreach ($subCategories as $subCat) {
     /**
      *your code to output the next level categories
      */
     }
     ?>
     </a>
     </li>
     <?php endforeach; ?>
     </ul>
     </li>