jak sortować kategorie wyświetlane w adminie?


15

Oto kod:

$category = Mage::getModel('catalog/category')->load(3);
$subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();
$subCatIds = explode(',',$subCats);
$currentUrl = Mage::helper('core/url')->getCurrentUrl();

Proszę o poradę, dzięki!

Odpowiedzi:


24
$category = Mage::getModel('catalog/category')->load(3);
$children = Mage::getModel('catalog/category')->getCollection()->setStoreId(Mage::app()->getStore()->getId());
$children->addAttributeToSelect('*')
        ->addAttributeToFilter('parent_id', $category->getId())
        ->addAttributeToFilter('is_active', 1)//get only active categories if you want
        ->addAttributeToSort('position');//sort by position

foreach ($children as $child){
    //do something with $child
}

Dziękuję za fragment, ale chcę trzymać się mojego kodu, ponieważ jest on już zastosowany w szablonie. Jak możemy dodać ten atrybut sortowania do $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();? dzięki!
Aamir Siddique

3
Można wymienić getChildren()z getChildrenCategories()i należy je posortować. Ale nadal dostajesz obiekty kategorii, a nie identyfikatory. Jeśli potrzebujesz identyfikatorów, możesz przeglądać kategorie potomne i łączyć ich identyfikatory. Naprawdę nie rozumiem, co próbujesz osiągnąć.
Marius

^^ Chciałbym, aby gdzieś wyraźniej udokumentowano, że getChildren()zwraca nieposortowane identyfikatory i getChildrenCategories()zwraca posortowane obiekty. To wszystko dla mnie wyjaśniło, sami doktoranci Magento na razie tego nie wyjaśniają.
waffl

całkiem pewne, że getChildrenCategories nie działa z Flat Categories
Samyer

7

Możesz spróbować zmienić kod, aby użyć ładnej kombinacji getChilderCategories () i funkcji toArray.

$category = Mage::getModel('catalog/category')->load(3);
$subCats = $category->getChildrenCategories();
$subCatIds = $subCats->toArray(array('entity_id'));

Funkcja getChildrenCategories da ci kolekcję w tej samej kolejności co sekcja admin, a następnie poprzez wywołanie toArray i tylko zapytanie o atrybut uprawnienie_id będziesz mieć tablicę identyfikatorów kategorii

array(3) {
    [10]=> array(1) {
         ["entity_id"]=> string(2) "10"
    }
    [13]=> array(1) {
        ["entity_id"]=> string(2) "13"
    }
    [18]=> array(1) {
        ["entity_id"]=> string(2) "18"
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.