tags:

views:

35

answers:

1

This is very basic magento question i guess. I want to first get all the store categories, then loop through them to get their sub-categories and products and similarly continue till the last sub-category.

I will be using this in an external page having Mage::app() declared at the top of the page. I am not aware of the Magento API's(if thats wat they are called) to use to get this functionality.

Remember I am not using this in any of the templates, so something like getCurrentCategory() will not work here i guess.

Also please guide if there are any good resources to search for particular functionality in magento and API's to implement it, or am i doomed to go through their phpdoc to know the list of methods.

Any help here will be greatly appreciated, Thanks.

A: 

The following should help you do what you want. From my brief look at things, it appears Magento doesn't think of things strictly in a Category/Sub-Category kind of way. Rather, there's a bunch of categories, and some categories have parents, some have children, and some have both.

//get a collection of all the categories
Mage::app($mageRunCode, $mageRunType);
//...

//get a collection of all the categories
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*');    

foreach($categories as $category)
{
    //get an array of parent ids for this category
    $array = $category->getParentIds();

    //get an array of children ids
    $children = explode(',',$category->getChildren());

    //get a list of all the products in a category
    $products = $category->getProductCollection();

}

//pull collection of categories with a parent whose id is 13
$categories = Mage::getModel('catalog/category')
->getCollection()
->addFieldToFilter('parent_id','13')    
->addAttributeToSelect('*');        
Alan Storm