如何显示一个特定类别的所有子类别按字母顺序与Magento


How to show all subcategories of a particular category in alphabetical order with Magento

我想按照字母顺序显示特定类别的所有子类别,就像我在admin中添加的那样。我在这个页面上显示了我的所有子类别app/design/frontend/default/mytheme/template/catalog/product/product-listing.phtml

代码

<?php
$categories = Mage::getSingleton('catalog/layer')->getCurrentCategory()->getChildren();
$catArray = explode(',', $categories);
?>
<div class="categories_list">
<?php
foreach($catArray as $child){
$parentCategoryId = $child; 
$categoriesgot = Mage::getModel('catalog/category')->load($parentCategoryId)->getChildren();
$catArraygot = explode(',', $categoriesgot);
$categoriesCount = count($catArraygot);
//echo $categoriesCount;
    $_child = Mage::getModel( 'catalog/category' )->load($child );
    $products_count = Mage::getModel('catalog/category')->load($child)->getProductCount();
//############################################################################################################
//$parentCategoryId = $child;   
//$categoriesgot = Mage::getModel('catalog/category')->load($parentCategoryId)->getChildren();
$category_name = Mage::registry('current_category')->getName(); 

if($categoriesCount >= 1 AND $products_count < 1)
{
    $value = $categoriesCount." Categories";
}
else if($categoriesCount == 1 AND $products_count > 0)
{
    $value = $products_count." Products";
}
else if ($categoriesCount >= 1 AND $products_count > 1)
{
    $value = $categoriesCount." Categories";
}if($categoriesCount == 1 AND $products_count == 0)
{
    $value = $products_count." Products";
}
//echo $products_count;
    ?>

      <div class="listing">
      <a href="<?php echo $_child->getUrl() ?>">
            <img src="<?php echo $_child->getImageUrl();?>" alt="<?php echo $_child->getName()?>"  width="135" height="135"/>
               <h3 class="product-name"><?php echo $_child->getName() ?></h3></a>
                        <?php if($category_name != "Brands"){?>     <p><?php echo $value;?></p><?php }?>
  </div>
<?php 
}
?>
</div>

我不知道子类别是按哪个顺序显示的,因为子类别都混在一起了。如果有人知道这件事,请帮帮我。谢谢!

我想这对你会有用的

<?php
$cats =Mage::getModel('catalog/category')->getCategories(10);
$catIds = explode(',',$cats);
$categories = array();
foreach($catIds as $catId) {
       $category = Mage::getModel('catalog/category')->load($catId); 
       $categories[$category->getName()] = $category->getUrl();
}
ksort($categories, SORT_STRING);
?>
<ul>
<?php foreach($categories as $name => $url): ?>
    <li>
    <a href="<?php echo $url; ?>"><?php echo $name; ?></a>
    </li>
<?php endforeach; ?>
</ul>

如果有父类别,那么如何按照字母顺序或在后端输入的顺序获得子类别列表。

$category = Mage::getSingleton('catalog/layer')->getCurrentCategory();
$children = Mage::getModel('catalog/category')->getCollection()
     ->addAttributeToSelect('*')
     ->addAttributeToFilter('parent_id', $category->getId()) //get only direct children of main category
     ->addAttributeToFilter('is_active', 1) //in case you want only the active categories
     ->addAttributeToSort('name') //sort by name
     //->addAttributeToSort('position') //in case you want to sort by position
;
foreach ($children as $child) {
    //do something with $child
}

这样可以避免在可能导致性能问题的循环中调用load