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


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.