/** * 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); } }
/** * 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 * see Mage_Catalog_Model_Observer::_addCategoriesToMenu() * added new category data * * @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); } $tree = $parentCategoryNode->getTree(); $categoryData = array('name' => $category->getName(), 'id' => $nodeId, 'url' => Mage::helper('catalog/category')->getCategoryUrl($category), 'is_active' => $this->_isActiveMenuCategory($category), 'category_id' => $category->getId(), 'mm_block_identifier' => $category->getMmBlockIdentifier(), 'mm_image' => $category->getMmImage(), 'mm_turn_on' => $category->getMmTurnOn(), 'mm_turn_images_on' => $category->getMmTurnImagesOn(), 'mm_column_number' => $category->getMmColumnNumber()); $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 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); } }
/** * 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); } $tree = $parentCategoryNode->getTree(); $categoryData = array('name' => $category->getName(), 'id' => $nodeId, 'url' => Mage::helper('catalog/category')->getCategoryUrl($category), 'is_active' => $this->_isActiveMenuCategory($category), 'links' => $category->getData('links'), 'image' => $category->getImageUrl('image'), 'thumbnail' => Mage::getResourceModel('catalog/category')->getAttributeRawValue($category->getId(), "thumbnail", Mage::app()->getStore()->getId()), 'getLevel' => $category->getLevel(), 'iconimagepath' => Mage::getResourceModel('catalog/category')->getAttributeRawValue($category->getId(), "iconimagepath", Mage::app()->getStore()->getId())); $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); } }