0

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

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

 <!-- 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 -->
4

1 回答 1

1

好吧,正如我在https://stackoverflow.com/a/14586422/653867中建议的那样,您必须为您的二级类别加载一个类别对象:

$cat = Mage::getModel('catalog/category')->load($category->getEntityId());

然后你可以通过执行访问它的孩子

$children = $cat->getChildrenCategories();

$children变量是类型的集合Mage_Catalog_Model_Resource_Category_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>
于 2013-01-29T17:33:45.283 回答