Recuperar árbol categorías en Magento

Inicio MagentoRecuperar árbol categorías en Magento
mage+php

Recuperar árbol categorías en Magento

No Comments

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);
 
   }
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *