I have three categories like CAT-A, CAT-B, CAT-C and I want the product collection from these by the order CAT-A products, CAT-B products, CAT-C products.

When I trying to get the product collection without any filter, I get the random products from these categories.

I'm trying to filter the product collection by category like

$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSort('category_id', 'ASC')

but it's not working.

  • 1
    categoryid is not attribute so that is why its not working – Murtuza Zabuawala Sep 23 '16 at 13:30
  • then, How can I achieve this? @Murtuza – Shafeeque S Sep 23 '16 at 13:32
  • You Need to join with category for that find my answer for that – Murtuza Zabuawala Sep 23 '16 at 13:33

You have to join the category_product table if you want to be able to sort them because the category isn't a product attribute.
I believe there is a addCategoryFilter function that you can add to your collection, which takes a Mage_Catalog_Model_Category as an argument.
But this might prove inefficient if you have 3 categories and you might have to resort to using a join.


The code below might help you with JOINing categories to your product collection

$_rootcatID ='yourId';
$_testproductCollection = Mage::getResourceModel('catalog/product_collection')
  ->addAttributeToSort('category_id', array('in' => $_rootcatID))
  • It's not working.. Actually, I want the product collection by the order CAT-A products, CAT-B products, CAT-C products – Shafeeque S Sep 23 '16 at 13:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.