protected function printCategoryChildrenOpt(Mage_Catalog_Model_Category $category) { /** * @var $child Mage_Catalog_Model_Category */ $children = $category->getChildrenCategories(); foreach ($children as $child) { echo "<p> <b>Child cat#{$child->getId()} </b>:: {$child->getName()}</p>"; } }
/** * Get data array for building filter items * * @return array */ protected function _getItemsData() { $key = $this->getLayer()->getStateKey() . '_' . $this->_requestVar; $data = $this->getLayer()->getAggregator()->getCacheData($key); if ($data === null) { // load children for root category or current selected category for this filter $categories = $this->_appliedCategory instanceof Mage_Catalog_Model_Category ? $this->_appliedCategory->getChildrenCategories() : $this->_rootCategory->getChildrenCategories(); $this->getLayer()->getProductCollection()->addCountToCategories($categories); $data = array(); foreach ($categories as $category) { /** @var $category Mage_Catalog_Model_Categeory */ if ($category->getIsActive() && $category->getProductCount()) { $data[] = array('label' => Mage::helper('core')->escapeHtml($category->getName()), 'value' => $category->getId(), 'count' => $category->getProductCount()); } } $tags = $this->getLayer()->getStateTags(); $this->getLayer()->getAggregator()->saveCacheData($data, $key, $tags); } return $data; }
/** * Recursively returns a value / label array of all active categories * @param Mage_Catalog_Model_Category $category * @param String $parentname * @return array */ private function getChildCategories($category, $parentname = '') { //category not active - skip it if (!$category->getIsActive()) { return ''; } //array containing all the categories to return $ret = array(); /* Add the current category to return array * Root categories shouldn't be selected */ if ($category->getLevel() > 1) { $ret[$category->getID()] = $category->getName() . $parentname; } // get all children if (Mage::helper('catalog/category_flat')->isEnabled()) { $children = (array) $category->getChildrenNodes(); $childrenCount = count($children); } else { $children = $category->getChildrenCategories(); $childrenCount = $children->count(); } $hasChildren = $children && $childrenCount; // select active children $activeChildren = array(); foreach ($children as $child) { if ($child->getIsActive()) { $activeChildren[] = $child; } } $activeChildrenCount = count($activeChildren); $hasActiveChildren = $activeChildrenCount > 0; /** * Use recursion to include all children categories too */ foreach ($activeChildren as $child) { $childarray = $this->getChildCategories($child, " / " . $category->getName() . $parentname); foreach ($childarray as $k => $v) { $ret[$k] = $v; } } return $ret; }
/** * Recursively returns a value / label array of all active categories * * @param Mage_Catalog_Model_Category $category * @param String $parentname * @return array */ private function getChildCategories($category, $parentname = '') { //category not active - skip it if (!$category->getIsActive()) { return ''; } //array containing all the categories to return $ret = array(); /* Add the current category to return array * Root categories shouldn't be selected */ if ($category->getLevel() > 1) { $ret[$category->getID()] = ltrim($parentname . " / " . $category->getName(), " / "); } // get all children $children = $category->getChildrenCategories(); $childrenCount = $children->count(); $hasChildren = $children && $childrenCount; // select active children $activeChildren = array(); foreach ($children as $child) { if ($child->getIsActive()) { $activeChildren[] = $child; } } $activeChildrenCount = count($activeChildren); $hasActiveChildren = $activeChildrenCount > 0; /** * Use recursion to include all children categories too */ foreach ($activeChildren as $child) { $childarray = $this->getChildCategories($child, $parentname . " / " . $category->getName()); foreach ($childarray as $k => $v) { $ret[$k] = ltrim($v, " / "); } } return $ret; }
public function testGetChildrenCategoriesEmpty() { $this->_model->load(5); $children = $this->_model->getChildrenCategories(); $this->assertEquals(0, count($children)); }
/** * Returns list of subcategories recursively. * * @param Mage_Catalog_Model_Category $category * @return mixed */ protected function getSubcategories(Mage_Catalog_Model_Category $category) { if (!isset($this->subcategories[$category->getId()])) { $list = array(); $categories = $category->getChildrenCategories(); $this->getAllChildCategories($categories, $list); $this->subcategories[$category->getId()] = $list; } return $this->subcategories[$category->getId()]; }
/** * * * @param array $arr_cat * @param Mage_Catalog_Model_Category $category * @return array */ public static function getAllChildrenCategories(&$arr_cat, $category, $fl_include_cur_cat = true) { if (empty($arr_cat)) { $arr_cat = array(); } if (!empty($category)) { if ($fl_include_cur_cat == true) { $arr_cat[] = $category->getId(); } $children_cat = $category->getChildrenCategories(); if (!empty($children_cat)) { foreach ($children_cat as $cat) { self::getAllChildrenCategories($arr_cat, $cat, $fl_include_cur_cat); } } } return $arr_cat; }