come ordinare le categorie come sono mostrate in admin?


15

Ecco il codice:

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

Per favore consiglio, grazie!

Risposte:


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
}

Grazie per lo snippet, ma voglio attenermi al mio codice in quanto è già applicato nel modello. Come possiamo aggiungere questo attributo di ordinamento nel $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren();? grazie!
Aamir Siddique,

3
Puoi sostituirlo getChildren()con getChildrenCategories()e dovresti averli ordinati. Ma ottieni ancora gli oggetti categoria non gli ID. Se hai bisogno degli ID, puoi scorrere le categorie secondarie e concatenarli. Non capisco davvero cosa stai cercando di ottenere.
Marius

^^ Vorrei che fosse documentato più chiaramente da qualche parte che getChildren()restituisce ID non getChildrenCategories()ordinati e restituisce oggetti ordinati. Questo ha chiarito tutto per me, i documenti magento stessi fin d'ora non lo chiariscono.
Waffl,

abbastanza sicuro getChildrenCategories non funziona con le categorie piatte
Samyer

7

Potresti provare a cambiare il tuo codice per usare un bel mix di getChilderCategories () e la funzione toArray.

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

La funzione getChildrenCategories ti darà una raccolta nello stesso ordine della sezione admin e quindi chiamando a Array e chiedendo solo l'attributo entit_id avrai una matrice di ID categoria

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"
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.