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>