protected function printCategoryChildrenOpt(Mage_Catalog_Model_Category $category)
 {
     /**
      * @var $child Mage_Catalog_Model_Category
      */
     $children = $category->getChildrenCategories();
     foreach ($children as $child) {
         echo "<p>&nbsp;&nbsp;&nbsp;<b>Child cat#{$child->getId()}&nbsp;</b>::&nbsp;{$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;
 }
Exemple #3
0
 /**
  * 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));
 }
Exemple #6
0
 /**
  * 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;
 }