magento category products lowest level category
<?php
class Category
{
private $lowestProductCategories;
private $lowestCategoriesByName;
/**
* @param $productId
* @return array
*/
private function getParentProducts($productId){
return Mage::getResourceSingleton('catalog/product_type_configurable')->getParentIdsByChild($productId);
}
private function getLowestCategories()
{
if ( ! $this->lowestCategoriesByName ) {
$cat = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('children_count')->addAttributeToSelect('name');
foreach ($cat as $category) {
if ( $category->getData('children_count') == 0 ) {
$this->lowestCategoriesByName[$category->getData('name')] = $category;
}
}
}
return $this->lowestCategoriesByName;
}
private function getProductsForCategories($categories)
{
if ( ! $this->lowestProductCategories ) {
$productsForLowestCategories = array();
foreach ($categories as $category) {
$productsForLowestCategories[$category->getName()] = Mage::getResourceModel('catalog/product_collection')
->addCategoryFilter($category)
->addAttributeToSelect('entity_id');
}
foreach ($productsForLowestCategories as $key => $product) {
foreach ($product->getData() as $item) {
$prods[$key][] = $item['entity_id'];
}
}
$this->lowestProductCategories = $prods;
}
return $this->lowestProductCategories;
}
}