/** * Override Mage_Catalog_Model_Observer _addCategoriesToMenu method to remove the links for the categories having unclickable attribute set * * @param Varien_Data_Tree_Node_Collection|array $categories * @param Varien_Data_Tree_Node $parentCategoryNode * @param Mage_Page_Block_Html_Topmenu $menuBlock * @param bool $addTags */ protected function _addCategoriesToMenu($categories, $parentCategoryNode, $menuBlock, $addTags = false) { //Get collection of unclickable category ids in the menu $categoryModel = Mage::getModel('catalog/category'); foreach ($categories as $category) { if (!$category->getIsActive()) { continue; } $nodeId = 'category-node-' . $category->getId(); $categoryModel->setId($category->getId()); if ($addTags) { $menuBlock->addModelTags($categoryModel); } $tree = $parentCategoryNode->getTree(); //Set javascript:; as category url if category attribute is unclickable $categoryData = array('name' => $category->getName(), 'id' => $nodeId, 'url' => in_array($category->getId(), $this->unClickableIds) ? self::NOLINK : Mage::helper('catalog/category')->getCategoryUrl($category), 'is_active' => $this->_isActiveMenuCategory($category)); $categoryNode = new Varien_Data_Tree_Node($categoryData, 'id', $tree, $parentCategoryNode); $parentCategoryNode->addChild($categoryNode); $flatHelper = Mage::helper('catalog/category_flat'); if ($flatHelper->isEnabled() && $flatHelper->isBuilt(true)) { $subcategories = (array) $category->getChildrenNodes(); } else { $subcategories = $category->getChildren(); } $this->_addCategoriesToMenu($subcategories, $categoryNode, $menuBlock, $addTags); } }
/** * Recursively adds categories to top menu * * @param Varien_Data_Tree_Node_Collection|array $categories * @param Varien_Data_Tree_Node $parentCategoryNode * @param Mage_Page_Block_Html_Topmenu $menuBlock * @param bool $addTags */ protected function _addCategoriesToMenu($categories, $parentCategoryNode, $menuBlock, $addTags = false) { $categoryModel = Mage::getModel('catalog/category'); foreach ($categories as $category) { if (!$category->getIsActive()) { continue; } $nodeId = 'category-node-' . $category->getId(); $categoryModel->setId($category->getId()); if ($addTags) { $menuBlock->addModelTags($categoryModel); } //check if there is a cms page set in category if ($category->getCmsPage()) { $categoryUrl = Mage::helper('cms/page')->getPageUrl($category->getCmsPage()); } else { $categoryUrl = Mage::helper('catalog/category')->getCategoryUrl($category); } $tree = $parentCategoryNode->getTree(); $categoryData = array('name' => $category->getName(), 'id' => $nodeId, 'url' => $categoryUrl, 'is_active' => $this->_isActiveMenuCategory($category)); $categoryNode = new Varien_Data_Tree_Node($categoryData, 'id', $tree, $parentCategoryNode); $parentCategoryNode->addChild($categoryNode); $flatHelper = Mage::helper('catalog/category_flat'); if ($flatHelper->isEnabled() && $flatHelper->isBuilt(true)) { $subcategories = (array) $category->getChildrenNodes(); } else { $subcategories = $category->getChildren(); } $this->_addCategoriesToMenu($subcategories, $categoryNode, $menuBlock, $addTags); } }
/** * @param Varien_Data_Tree_Node $menuTree * @return string */ protected function _drawTwoLevelMenu(Varien_Data_Tree_Node $menuTree) { $children = $menuTree->getChildren(); $html = '<li>'; $html .= '<a href="' . $menuTree->getUrl() . '"><span>' . $this->escapeHtml($menuTree->getName()) . '</span></a>'; $html .= '<div class="drop"><div class="drop-holder"><div class="col-frame"><div class="col-holder">'; $index = 1; foreach ($children as $child) { $html .= '<div class="col">'; $html .= '<strong class="title-drop">' . $this->escapeHtml($child->getName()) . '</strong><ul>'; $secondLevelChildren = $child->getChildren(); $childrenCount = $secondLevelChildren->count(); $key = 0; foreach ($secondLevelChildren as $ch) { if ($key == 5) { break; } $html .= '<li><a href="' . $ch->getUrl() . '">' . $this->escapeHtml($ch->getName()) . '</a></li>'; $key++; } $html .= '</ul>'; if ($childrenCount > 5 || $childrenCount == 0) { $html .= '<a class="all-links" href="' . $child->getUrl() . '">All ' . $this->escapeHtml($child->getName()) . '</a>'; } $html .= '</div>'; if ($index % 3 == 0 && $index > 0) { $html .= '</div><div class="col-holder">'; } $index++; } $html .= '</div></div></div></div>'; $html .= '</li>'; return $html; }
/** * Inject links into the top navigation * * @param Fishpig_Wordpress_Model_Resource_Menu_Item_Collection $items * @param Varien_Data_Tree_Node $parentNode * @return bool */ protected function _injectLinks($items, $parentNode) { if (!$parentNode) { return false; } foreach ($items as $item) { try { $nodeId = 'wp-node-' . $item->getId(); $data = array('name' => $item->getLabel(), 'id' => $nodeId, 'url' => $item->getUrl(), 'is_active' => $item->isItemActive()); if ($data['is_active']) { $parentNode->setIsActive(true); $buffer = $parentNode; while ($buffer->getParent()) { $buffer = $buffer->getParent(); $buffer->setIsActive(true); } } $itemNode = new Varien_Data_Tree_Node($data, 'id', $parentNode->getTree(), $parentNode); $parentNode->addChild($itemNode); if (count($children = $item->getChildrenItems()) > 0) { $this->_injectLinks($children, $itemNode); } } catch (Exception $e) { Mage::helper('wordpress')->log($e->getMessage()); } } return true; }
/** * Get JSON of a tree node or an associative array * * @param Varien_Data_Tree_Node|array $node * @param int $level * @return string */ protected function _getNodeJson($node, $level = 1) { $item = array(); $item['text'] = $this->htmlEscape($node->getName()); if ($this->_withProductCount) { $item['text'] .= ' (' . $node->getProductCount() . ')'; } $item['id'] = $node->getId(); $item['path'] = $node->getData('path'); $item['cls'] = 'folder ' . ($node->getIsActive() ? 'active-category' : 'no-active-category'); $item['allowDrop'] = false; $item['allowDrag'] = false; if ($node->hasChildren()) { $item['children'] = array(); foreach ($node->getChildren() as $child) { $item['children'][] = $this->_getNodeJson($child, $level + 1); } } if (empty($item['children']) && (int) $node->getChildrenCount() > 0) { $item['children'] = array(); } if (!empty($item['children'])) { $item['expanded'] = true; } if (in_array($node->getId(), $this->getCategoryIds())) { $item['checked'] = true; } return $item; }
/** * Inject links into the top navigation * * @param Mage_Core_Model_Resource_Db_Collection_Abstract $items * @param Varien_Data_Tree_Node $parentNode * @return bool */ protected function _injectLinks($items, $parentNode) { if (!$parentNode) { return false; } foreach ($items as $item) { if (!$item->canIncludeInMenu()) { continue; } $children = $item->getSplashPages(); if ($children && count($children->addOrderByName()->addFieldToFilter('include_in_menu', 1)->load()) === 0) { continue; } $data = array('name' => $item->getName(), 'id' => $item->getMenuNodeId(), 'url' => $item->getUrl(), 'is_active' => $item->isActive()); if ($data['is_active']) { $parentNode->setIsActive(true); $buffer = $parentNode; while ($buffer->getParent()) { $buffer = $buffer->getParent(); $buffer->setIsActive(true); } } $itemNode = new Varien_Data_Tree_Node($data, 'id', $parentNode->getTree(), $parentNode); $parentNode->addChild($itemNode); if ($children) { $this->_injectLinks($children, $itemNode); } } return true; }
/** * @param Varien_Data_Tree_Node $category * @param int $level * @param boolean $last * @return string */ function drawItem($category, $categoryDepth = 0, $last = false) { $html = ''; if (!$category->getIsActive() && !$this->categoryIsRoot($category)) { return $html; } if (!$this->categoryHasProductUnderIt($category)) { return; } $html .= '<li>'; $html .= '<div class="vaf-cat-toggler">'; $html .= $this->htmlEscape($this->categoryName($category)); $html .= '<div class="vaf-toggle-icon vaf-toggle-icon-plus"></div>'; $html .= '</div>' . "\n"; $html .= '<div class="vaf-toggle">'; if ($category->hasChildren()) { $htmlChildren = $this->drawCategoryCollection($category, $categoryDepth); if (!empty($htmlChildren)) { $html .= '<ul >' . "\n" . $htmlChildren . '</ul>'; } } $html .= $this->drawProductCollection($category); $html .= '</div>'; $html .= '</li>' . "\n"; return $html; }
/** * @param Varien_Data_Tree_Node $menuTree * @param string $childrenWrapClass * * @return string */ protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass) { $html = ''; $counter = 1; $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } $blockName = $childLevel == 0 ? 'bennoislost.easy-navigation.renderer.with-children' : 'bennoislost.easy-navigation.renderer.single'; $html .= $this->_renderBlockItem($blockName, $childrenWrapClass, $child, $outermostClassCode); $counter++; } return $html; }
public function BuildBranch(Varien_Data_Tree_Node $node) { $buildString = '<li style="padding-left: 16px;">'; $buildString .= '<div class="tree-level-' . $node->getLevel() . '">'; if ($node->getChildrenCount() != 0) { $buildString .= '<div class="opener" id="opener' . $node->getId() . '" OnClick="OpenMe(this)"></div>'; } else { $buildString .= '<div class="child"></div>'; } $buildString .= ' <input type="checkbox" class="inputcb" id="inputcb' . $node->getId() . '" OnClick="Decide(this)" enabled="false"/> <div class="folder"></div> <a tabindex="1" href="#" hidefocus="on" id="linkItem"><span unselectable="on" id="extdd-' . $node->getLevel() . '">' . $node->getName() . '</a> '; $buildString .= '</div>'; if ($node->getChildrenCount() != 0) { $buildString .= '<ul id="ToOpen' . $node->getId() . '">'; foreach ($node->getChildren() as $child) { $buildString .= $this->BuildBranch($child); } $buildString .= '</ul>'; } $buildString .= '</li>'; return $buildString; }
/** * Check if click able enabled for category. * * @param Varien_Data_Tree_Node|Mage_Catalog_Model_Category $category * @return bool */ protected function _isCategoryClickAble($category) { $isCategoryClickAbleStatus = true; $isCategoryClickAble = $category->getData(Monsoon_Test_Helper_Data::IS_CLICK_ABLE_LINK_CODE); if ($isCategoryClickAble !== null && (bool) $isCategoryClickAble === false) { $isCategoryClickAbleStatus = false; } return $isCategoryClickAbleStatus; }
/** * {@inheritDoc} */ protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass) { $html = ''; $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1; $counter = 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } if ($child->hasChildren()) { $outermostClassCode .= ' data-toggle="dropdown" '; } $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>'; $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . '><span>'; $html .= $this->escapeHtml($child->getName()); if ($child->hasChildren()) { $html .= ' <b class="caret"></b>'; } $html .= '</span></a>'; if ($child->hasChildren()) { if (!empty($childrenWrapClass)) { $html .= '<div class="' . $childrenWrapClass . '">'; } $html .= '<ul class="level' . $childLevel . ' dropdown-menu">'; if (Mage::getStoreConfig('catalog/navigation/top_in_dropdown') && $childLevel == 0) { $prefix = Mage::getStoreConfig('catalog/navigation/top_in_dropdown_prefix'); $suffix = Mage::getStoreConfig('catalog/navigation/top_in_dropdown_suffix'); $html .= '<li class="level1 level-top-in-dropdown">'; $html .= '<a href="' . $child->getUrl() . '"><span>'; $html .= $this->escapeHtml($this->__($prefix) . ' ' . $child->getName() . ' ' . $suffix); $html .= '</span></a>'; $html .= '</li>'; $html .= '<li class="divider"></li>'; } $html .= $this->_getHtml($child, $childrenWrapClass); $html .= '</ul>'; if (!empty($childrenWrapClass)) { $html .= '</div>'; } } $html .= '</li>'; $counter++; } return $html; }
/** * Adds a node to this node */ public function add(Varien_Data_Tree_Node $node) { $node->setParent($this->_container); // Set the Tree for the node if ($this->_container->getTree() instanceof Varien_Data_Tree) { $node->setTree($this->_container->getTree()); } $this->_nodes[$node->getId()] = $node; return $node; }
/** * Export product collection * * @param Varien_Data_Tree_Node $category */ protected function _exportProductCollection($category) { $categoryModel = Mage::getModel('catalog/category')->load($category->getId()); $this->setCategory($categoryModel)->setLayer(Mage::getSingleton('catalog/layer')); foreach ($this->_getProductCollection() as $product) { $product->load($product->getEntityId()); Mage::app()->getRequest()->setParam('id', $product->getId()); $this->_getExportModel(self::TYPE_PRODUCT)->setProduct($product)->exportData(); $this->_getExportModel(self::TYPE_GALLERY)->setProduct($product)->exportData(); $this->_getExportModel(self::TYPE_REVIEW)->setProduct($product)->exportData(); } }
/** * Recursively generates top menu html from data that is specified in $menuTree * * @param Varien_Data_Tree_Node $menuTree * @param string $childrenWrapClass * @return string */ protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass) { $html = ''; $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1; $counter = 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; $brandCategoryId = Mage::getStoreConfig('brand/brand/category_id'); $_helperBrands = Mage::helper('brand'); $brandUrl = Mage::getUrl($_helperBrands->getBrandsUrl()); foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>'; $categoryId = str_replace("category-node-", "", $child->getId()); //$url=($categoryId==$brandCategoryId)?$brandUrl:$child->getUrl(); $url = $child->getUrl(); $html .= '<a href="' . $url . '" ' . $outermostClassCode . '><span>' . $this->escapeHtml($child->getName()) . '</span></a>'; if ($child->hasChildren()) { if (!empty($childrenWrapClass)) { $html .= '<div class="' . $childrenWrapClass . '">'; } $html .= '<ul class="level' . $childLevel . '">'; /*if($childLevel==0) { $html .= '<div class="submenu">'; }*/ $html .= $this->_getHtml($child, $childrenWrapClass); /*if($childLevel==0) { $html .= '</div>'; }*/ $html .= '</ul>'; if (!empty($childrenWrapClass)) { $html .= '</div>'; } } $html .= '</li>'; $counter++; } return $html; }
/** * Checks whether category belongs to active category's path * * @param Varien_Data_Tree_Node $category * @return bool */ protected function _isActiveMenuCategory($category) { $catalogLayer = Mage::getSingleton('catalog/layer'); if (!$catalogLayer) { return false; } $currentCategory = $catalogLayer->getCurrentCategory(); if (!$currentCategory) { return false; } $categoryPathIds = explode(',', $currentCategory->getPathInStore()); return in_array($category->getId(), $categoryPathIds); }
public function getPath(&$prevNodes = array()) { if ($this->_parent) { array_push($prevNodes, $this); $this->_parent->getPath($prevNodes); } return $prevNodes; }
/** * Returns categories with include_in_mega_menu set to yes in Admin * * @return Varien_Data_Tree_Node_Collection */ public function getCategories() { $root = Mage::app()->getStore()->getRootCategoryId(); $tree = Mage::getResourceModel('catalog/category_tree'); /* @var $tree Mage_Catalog_Model_Resource_Category_Tree */ $nodes = $tree->loadNode($root); $categories = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect(array('name', 'url_key', 'is_active', 'mega_menu_block', 'mega_menu_sort_order'))->addAttributeToSort('mega_menu_sort_order', 'ASC')->addAttributeToFilter('include_in_mega_menu', 1); foreach ($categories as $category) { $categoryData = $this->getCategoryData($category); $categoryNode = new Varien_Data_Tree_Node($categoryData, 'id', $tree, $nodes); $categoryChildren = $this->getSubcategories($category); foreach ($categoryChildren as $child) { $childData = $this->getCategoryData($child); $childCategoryNode = new Varien_Data_Tree_Node($childData, 'id', $tree, $nodes); $categoryNode->addChild($childCategoryNode); } $nodes->addChild($categoryNode); } return $nodes->getChildren(); }
public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0) { $level++; $values[$node->getId()]['value'] = $node->getId(); if ($level > 3) { $values[$node->getId()]['label'] = str_repeat("-", $level) . $node->getName(); } else { $values[$node->getId()]['label'] = $node->getName(); } foreach ($node->getChildren() as $child) { $values = $this->buildCategoriesMultiselectValues($child, $values, $level); } return $values; }
protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass) { $html = ''; $children = $menuTree->getChildren(); $parentLevel = $menuTree->getLevel(); $childLevel = is_null($parentLevel) ? 0 : $parentLevel + 1; $counter = 1; $childrenCount = $children->count(); $parentPositionClass = $menuTree->getPositionClass(); $itemPositionClassPrefix = $parentPositionClass ? $parentPositionClass . '-' : 'nav-'; foreach ($children as $child) { $child->setLevel($childLevel); $child->setIsFirst($counter == 1); $child->setIsLast($counter == $childrenCount); $child->setPositionClass($itemPositionClassPrefix . $counter); $outermostClassCode = ''; $outermostClass = $menuTree->getOutermostClass(); if ($childLevel == 0 && $outermostClass) { $outermostClassCode = ' class="' . $outermostClass . '" '; $child->setClass($outermostClass); } $html .= '<li ' . $this->_getRenderedMenuItemAttributes($child) . '>'; $html .= '<a href="' . $child->getUrl() . '" ' . $outermostClassCode . ' class="nav-link">' . $this->escapeHtml($child->getName()) . '</a>'; if ($child->hasChildren()) { if (!empty($childrenWrapClass)) { $html .= '<div class="' . $childrenWrapClass . '">'; } $html .= '<ul class="level' . $childLevel . '">'; $html .= $this->_getHtml($child, $childrenWrapClass); $html .= '</ul>'; if (!empty($childrenWrapClass)) { $html .= '</div>'; } $html .= '<span class="subnav-toggle"><i class="icon icon-angle-down"></i><i class="icon icon-angle-up"></i></span>'; } $html .= '</li>'; $counter++; } return $html; }
protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass) { $html = ''; $children = $menuTree->getChildren(); foreach ($children as $child) { $menu_class = ""; if ($child->hasChildren()) { $menu_class = "has-submenu"; } $html .= '<li class="' . $menu_class . '"">'; $html .= '<a href="' . $child->getUrl() . '"><span>' . $this->escapeHtml($child->getName()) . '</span></a>'; if ($child->hasChildren()) { $html .= '<ul class="left-submenu"> <li class="back"><a href="#">' . $this->__('Back') . '</a></li>'; $html .= '<li><a href="' . $child->getUrl() . '">' . $this->__('View All ') . $this->escapeHtml($child->getName()) . '</a></li>'; $html .= $this->_getHtml($child, $childrenWrapClass); $html .= '</ul>'; } $html .= '</li>'; } return $html; }
function nodeToArray(Varien_Data_Tree_Node $node) { $result = array(); $result['category_id'] = $node->getId(); $result['parent_id'] = $node->getParentId(); $result['name'] = $node->getName(); $result['is_active'] = $node->getIsActive(); $result['position'] = $node->getPosition(); $result['level'] = $node->getLevel(); $result['children'] = array(); foreach ($node->getChildren() as $child) { $result['children'][] = $this->nodeToArray($child); } return $result; }
/** * Recursively adds CMS pages to top menu * * @param Varien_Data_Tree_Node_Collection|array $pages * @param Varien_Data_Tree_Node $parentPageNode * @param Mage_Page_Block_Html_Topmenu $menuBlock * @param bool $addTags */ protected function _addPagesToMenu($pages, $parentPageNode, $menuBlock, $addTags = false) { $pageModel = Mage::getModel('cms/page'); foreach ($pages as $page) { if (!$page->getIsActive() || !$page->getIncludeInMenu() || !$this->_isAllowed($page)) { continue; } $nodeId = 'page-node-' . $page->getId(); $pageModel->setId($page->getId()); if ($addTags) { $menuBlock->addModelTags($pageModel); } $tree = $parentPageNode->getTree(); $pageData = array('name' => $page->getTitle(), 'id' => $nodeId, 'url' => $page->getUrl(), 'is_active' => $this->_isActiveMenuPage($page)); $pageNode = new Varien_Data_Tree_Node($pageData, 'id', $tree, $parentPageNode); $parentPageNode->addChild($pageNode); $children = $page->getChildren(); if (Mage::helper('cms/page')->isPermissionsEnabled($this->_helper->getStore())) { $children->addPermissionsFilter($this->_helper->getCustomerGroupId()); } $this->_addPagesToMenu($children, $pageNode, $menuBlock, $addTags); } }
/** * @param Varien_Data_Tree_Node $node * @param array $values * @param int $level * @return array */ protected function _buildCategoriesValues(Varien_Data_Tree_Node $node, $values, $level = 0) { ++$level; $values[$node->getId()]['value'] = $node->getId(); $values[$node->getId()]['label'] = str_repeat('--', $level) . $node->getName(); foreach ($node->getChildren() as $child) { $values = $this->_buildCategoriesValues($child, $values, $level); } return $values; }
private function nodeToArray(Varien_Data_Tree_Node $node) { $result = array(); $category = Mage::getModel('catalog/category')->load($node->getId()); if ($category->getAvailableForSupplier() == 1) { $result['category_id'] = $node->getId(); $result['parent_id'] = $node->getParentId(); $result['name'] = $node->getName(); $result['is_active'] = $node->getIsActive(); $result['position'] = $node->getPosition(); $result['level'] = $node->getLevel(); } $result['children'] = array(); foreach ($node->getChildren() as $child) { $result['children'][] = $this->nodeToArray($child); } return $result; }
protected function _getMenuItemClasses(Varien_Data_Tree_Node $item) { $classes = array(); $classes[] = 'level' . $item->getLevel(); $classes[] = $item->getPositionClass(); if ($item->getIsFirst()) { $classes[] = 'first'; } if ($item->getIsActive()) { $classes[] = 'li_on'; } if ($item->getIsLast()) { $classes[] = 'last'; } if ($item->getClass()) { $classes[] = $item->getClass(); } if ($item->hasChildren()) { $classes[] = 'parent'; } return $classes; }
public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0) { $nonEscapableNbspChar = html_entity_decode(' ', ENT_NOQUOTES, 'UTF-8'); $level++; $values[$node->getId()]['value'] = $node->getId(); $values[$node->getId()]['label'] = str_repeat($nonEscapableNbspChar, ($level - 1) * 5) . $node->getName(); foreach ($node->getChildren() as $child) { $values = $this->buildCategoriesMultiselectValues($child, $values, $level); } return $values; }
public function buildCategoriesMultiselectValues(Varien_Data_Tree_Node $node, $values, $level = 0) { $level++; if ($level == 3) { //we have to show only third level category in drop down $values[$node->getId()]['value'] = $node->getId(); $values[$node->getId()]['label'] = $node->getName(); } foreach ($node->getChildren() as $child) { $values = $this->buildCategoriesMultiselectValues($child, $values, $level); } return $values; }
/** @param Varien_Data_Tree_Node $category */ function categoryIsRoot($category) { return $category->getId() == Mage::app()->getStore()->getRootCategoryId(); }
/** * Convert categories tree to array recursively * * @param Varien_Data_Tree_Node $node * @return array */ protected function _getNodesArray($node) { $result = array('id' => (int) $node->getId(), 'parent_id' => (int) $node->getParentId(), 'children_count' => (int) $node->getChildrenCount(), 'is_active' => (bool) $node->getIsActive(), 'name' => $node->getName(), 'level' => (int) $node->getLevel(), 'product_count' => (int) $node->getProductCount()); if (is_array($this->_allowedCategoryIds) && !in_array($result['id'], $this->_allowedCategoryIds)) { $result['disabled'] = true; } if ($node->hasChildren()) { $result['children'] = array(); foreach ($node->getChildren() as $childNode) { $result['children'][] = $this->_getNodesArray($childNode); } } $result['cls'] = ($result['is_active'] ? '' : 'no-') . 'active-category'; $result['expanded'] = !empty($result['children']); return $result; }
protected function _addChildNodes($children, $path, $parentNode, $withChildren = false, $level = 0) { if (isset($children[$path])) { foreach ($children[$path] as $child) { $nodeId = isset($child[$this->_idField]) ? $child[$this->_idField] : false; if ($parentNode && $nodeId && ($node = $parentNode->getChildren()->searchById($nodeId))) { $node->addData($child); } else { $node = new Varien_Data_Tree_Node($child, $this->_idField, $this, $parentNode); $node->setLevel($node->getData($this->_levelField)); $node->setPathId($node->getData($this->_pathField)); $this->addNode($node, $parentNode); } if ($withChildren) { $this->_loaded = false; $node->loadChildren(1); $this->_loaded = false; } if ($path) { $childrenPath = explode('/', $path); } else { $childrenPath = array(); } $childrenPath[] = $node->getId(); $childrenPath = implode('/', $childrenPath); $this->_addChildNodes($children, $childrenPath, $node, $withChildren, $level + 1); } } }