Recuperar árbol categorías en Magento .
Después de utilizar diferentes funciones para recuperar el árbol de categorías en un array (que podéis utilizar en un campo select o multiselect de un form de Magento), os adjuntamos las funciones que mejor nos han funcionado!
Esperamos os sean de utilidad!
/** * Option Category: Recuperar árbol de categorías. */ /** Definición Constantes const IDENT = '_'; const IDENT_END = '> '; protected $_categories = array(); /** * * getCategoriesArray: Recuperar árbol categorías * * @param int $parentId * @param int $recursionLevel * * @return array */ public function getCategoriesArray($parentId = 1, $recursionLevel = 3) { //Get Level1 $catlevel1 = 1; $Categories = Mage::getModel('catalog/category') ->getCollection() ->addAttributeToSelect('*') ->addIsActiveFilter(); foreach ($Categories as $nodecat) { if ($nodecat->getlevel() == 0) { $catlevel1 = $nodecat->getEntityId(); } } $recursionLevel = (int)$recursionLevel; $parentId = (int)$parentId; $category = Mage::getModel('catalog/category'); $storeCategories = Mage::getModel('catalog/category') ->getCollection() ->addAttributeToSelect('*') ->addFieldToFilter('parent_id',$catlevel1) ->setOrder('position', 'ASC'); foreach ($storeCategories as $node) { $this->_categories[] = array( 'label' => $node->getName(), 'value' => $node->getEntityId() ); $this->_getChild($node->getEntityId(),2); } return $this->_categories; } /** * * _getChild: Recuperar subniveles * * @param int $catid - Id Category * @param int $level - Tree Level */ protected function _getChild($catid,$level) { $storeCategories = Mage::getModel('catalog/category') ->getCollection() ->addAttributeToSelect('*') ->addFieldToFilter('parent_id',$catid) ->setOrder('position', 'ASC'); foreach ($storeCategories as $node) { $prefix = str_repeat(self::IDENT, $level * 1 -1) . self::IDENT_END; $this->_categories[] = array( 'label' => $prefix . $node->getName(), 'value' => $node->getEntityId() ); $this->_getChild($node->getEntityId(),$level+1); } }