bagaimana cara mengurutkan kategori seperti yang ditampilkan di admin?


15

Ini kodenya:

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

Mohon saran, terima kasih!

Jawaban:


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
}

Terima kasih atas cuplikannya, tetapi saya ingin tetap menggunakan kode saya karena sudah diterapkan dalam templat. Bagaimana kita bisa menambahkan atribut semacam ini ke dalam $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();? Terima kasih!
Aamir Siddique

3
Anda dapat menggantinya getChildren()dengan getChildrenCategories()dan Anda harus mengurutkannya. Tapi tetap saja Anda mendapatkan objek kategori bukan id. Jika Anda membutuhkan id, Anda dapat mengulangi kategori anak dan menyatukan id mereka. Saya tidak begitu mengerti apa yang ingin Anda capai.
Marius

^^ Saya berharap itu lebih jelas didokumentasikan di suatu tempat yang getChildren()mengembalikan ID yang tidak disortir, dan getChildrenCategories()mengembalikan objek yang diurutkan. Ini menjelaskan segalanya bagi saya, magento mendokumentasikan diri mereka seperti yang sekarang tidak membuat ini jelas.
waffl

cukup yakin getChildrenCategories tidak bekerja dengan Kategori Rata
Samyer

7

Anda bisa mencoba mengubah kode Anda untuk menggunakan campuran getChilderCategories () dan fungsi toArray yang bagus.

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

Fungsi getChildrenCategories akan memberi Anda koleksi dalam urutan yang sama dengan bagian admin dan kemudian dengan memanggil toArray dan hanya meminta atribut entit_id Anda akan memiliki array id kategori

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"
    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.