/** * Creating sorted array of nodes * * @param array $children * @param string $path * @param Varien_Object $parent */ public function addChildNodes($children, $path, $parent) { if (isset($children[$path])) { foreach ($children[$path] as $child) { $childrenNodes = $parent->getChildrenNodes(); if ($childrenNodes && isset($childrenNodes[$child->getId()])) { $childrenNodes[$child['entity_id']]->setChildrenNodes(array($child->getId() => $child)); } else { if ($childrenNodes) { $childrenNodes[$child->getId()] = $child; } else { $childrenNodes = array($child->getId() => $child); } $parent->setChildrenNodes($childrenNodes); } if ($path) { $childrenPath = explode('/', $path); } else { $childrenPath = array(); } $childrenPath[] = $child->getId(); $childrenPath = implode('/', $childrenPath); $this->addChildNodes($children, $childrenPath, $child); } } }
/** * Retrives frame object * @param Varien_Object $object Category Tree Node * @return Varien_Object */ protected function _getFrame(Varien_Object $object, $level = 1) { $frame = new Varien_Object(); $frame->setFrameId('category' . $object->getId()); $frame->setFrameCategoryId($object->getId()); $frame->setHeader($object->getName()); $frame->setLevel($level + 1); if (Mage::getStoreConfig('catalog/frontend/flat_catalog_category')) { $frame->setChildren($object->getChildrenNodes()); } else { $frame->setChildren($object->getChildren()); } $frame->setChildrenCount($this->__getChildrenCount($object)); if (Mage::getStoreConfig('catalog/frontend/flat_catalog_category')) { if (is_array($frame->getChildrenNodes()) || is_object($frame->getChildrenNodes()) && get_class($frame->getChildrenNodes()) == 'Varien_Data_Tree_Node_Collection') { foreach ($frame->getChildrenNodes() as $child) { $this->_frames[] = $this->_getFrame($child, $level + 1); } } } else { if (is_array($frame->getChildren()) || is_object($frame->getChildren()) && get_class($frame->getChildren()) == 'Varien_Data_Tree_Node_Collection') { foreach ($frame->getChildren() as $child) { $this->_frames[] = $this->_getFrame($child, $level + 1); } } } return $frame; }