2013-12-06 5 views
0

Я пытаюсь перечислить все категории в алфавитном порядке в magento, но он не работает.Категории в алфавитном порядке (magento)

<?php foreach ($this->getStoreCategories() as $_category): ?> 
      <?php 
       //arrange by Letter 
       foreach($_category->getChildren() as $_sub){ 
        $letter = substr(strtolower($_sub->getName()),0,1); 
        $subCategories[$letter][0]['name'] = $letter; //0 index is the letter 
        $i = 1; 
        while(isset($subCategories[$letter][$i])){ 
         $i++; 
        } 
        $subCategories[$letter][$i]['name'] = $_sub->getName(); 
        $subCategories[$letter][$i]['url'] = $this->getCategoryUrl($_sub); 
       } 
      ?> 

Я пропустил что-нибудь здесь?

ответ

2

Попробуйте этот код:

<?php 

$cats = Mage::getModel('catalog/category')->load('2')->getChildren(); 
$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> 
0

Я чувствую, что вы должны попробовать это.

$allCategories = Mage::getResourceModel('catalog/category_collection') 
       ->addAttributeToSelect('name') 
       ->addAttributeToSort('name','ASC'); 
0

попробовать это:

$root = Mage::app()->getStore()->getRootCategoryId(); 
$categories = Mage::getModel('catalog/category')->getCollection() 
    ->addAttributeToSelect('name') 
    ->addPathsFilter('1/'.$root) 
    ->addFieldToFilter('level', array('gt'=>2)) 
    ->addIsActiveFilter() 
    ->addAttributeToSort('name', 'ASC'); 

Это вы должны получить все активные категории в текущем магазине отсортированы по имени, не обращая внимания на уровень.

Смежные вопросы