/** * Retrieve category childs data objects * * @param Varien_Object $category * @return Varien_Object */ public function loadCategoryChilds(Varien_Object $category) { if ($category->getId() === null || $category->getStoreId() === null) { return $category; } $categories = $this->_getCategories(null, $category->getStoreId(), $category->getPath() . '/'); $category->setChilds(array()); foreach ($categories as $child) { if (!is_array($child->getChilds())) { $child->setChilds(array()); } if ($child->getParentId() == $category->getId()) { $category->setChilds($category->getChilds() + array($child->getId() => $child)); } else { if (isset($categories[$child->getParentId()])) { if (!is_array($categories[$child->getParentId()]->getChilds())) { $categories[$child->getParentId()]->setChilds(array()); } $categories[$child->getParentId()]->setChilds($categories[$child->getParentId()]->getChilds() + array($child->getId() => $child)); } } } $category->setAllChilds($categories); return $category; }