回答:
$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
}
getChildren()
てgetChildrenCategories()
、あなたはそれらをソートしている必要があります。ただし、IDではなくカテゴリオブジェクトを取得します。IDが必要な場合は、子カテゴリをループしてIDを連結できます。あなたが何を達成しようとしているのか本当に分かりません。
getChildren()
ソートされていないIDをgetChildrenCategories()
返し、ソートされたオブジェクトを返す場所がより明確に文書化されていればいいのですが。これは私のためにすべてをクリアしました、現在のmagentoのドキュメント自体はこれを明確にしません。
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"
}
}
$subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();
ますか?THX!