як сортувати категорії, як вони показані в адміністраторі?


15

Ось код:

$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();

Будь ласка, порада, THX!

Відповіді:


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
}

Дякую за фрагмент, але я хочу дотримуватися свого коду, оскільки він уже застосовується в шаблоні. Як ми можемо додати цей атрибут до сорту $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();? Дякую!
Аамір Сіддіке

3
Ви можете замінити getChildren()з , getChildrenCategories()і ви повинні їх сортуванням. Але все одно ви отримуєте об'єкти категорії, а не ідентифікатори. Якщо вам потрібні ідентифікатори, ви можете переглядати дочірні категорії та об'єднувати їхні ідентифікатори. Я не дуже розумію, чого ви намагаєтесь досягти.
Маріус

^^ Я хотів би, щоб воно було дещо чіткіше задокументовано, що getChildren()повертає несортовані ідентифікатори та getChildrenCategories()повертає відсортовані об'єкти. Це все прояснило для мене, самі документи Magento відтепер не роблять цього зрозумілим.
waffl

майже впевнений, що getChildrenCategories не працює з категоріями Flat
Samyer,

7

Ви можете спробувати змінити свій код, щоб використовувати гарну суміш getChilderCategories () та функції toArray.

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

Функція getChildrenCategories надасть вам колекцію в тому ж порядку, що і розділ адміністратора, після чого, зателефонувавши доArray і запитавши лише атрибут Right_id, ви матимете масив ідентифікаторів категорії

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"
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.