管理者に表示されるカテゴリをソートする方法は?


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();ますか?THX!
アーミルシディケ

3
あなたは置き換えることができgetChildren()getChildrenCategories()、あなたはそれらをソートしている必要があります。ただし、IDではなくカテゴリオブジェクトを取得します。IDが必要な場合は、子カテゴリをループしてIDを連結できます。あなたが何を達成しようとしているのか本当に分かりません。
マリウス

^^ getChildren()ソートされていないIDをgetChildrenCategories()返し、ソートされたオブジェクトを返す場所がより明確に文書化されていればいいのですが。これは私のためにすべてをクリアしました、現在のmagentoのドキュメント自体はこれを明確にしません。
ワッフル14年

getChildrenCategoriesがフラットカテゴリで動作しないことを確認してください
Samyer

7

getChilderCategories()とtoArray関数をうまく組み合わせて使用​​するようにコードを変更してみてください。

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

getChildrenCategories関数は、adminセクションと同じ順序でコレクションを提供し、toArrayを呼び出してentit_id属性のみを要求することで、カテゴリ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"
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.