/** * Retrieve cache key data * * @return array */ public function getCacheKeyInfo() { $cacheId = parent::getCacheKeyInfo(); $cacheId['menu_id'] = $this->getMenuId(); return $cacheId; }
/** * 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 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); } }
/** * Add navigation can show state to block cache keys * * @return array * @see Mage_Page_Block_Html_Topmenu::getCacheKeyInfo */ public function getCacheKeyInfo() { $cacheId = parent::getCacheKeyInfo(); $cacheId['can_show_navigation'] = Mage::helper('privatesales')->canShowNavigation(); $cacheId['short_cache_id'] = md5(implode('|', array_values($cacheId))); return $cacheId; }
protected function _getMenuItemClasses(Varien_Data_Tree_Node $item) { if (!Mage::helper('waterlee')->getIsActive()) { return parent::_getMenuItemClasses($item); } $classes = array(); $classes[] = 'level' . $item->getLevel(); $classes[] = $item->getPositionClass(); if ($item->getIsFirst()) { $classes[] = 'first'; } if ($item->getIsActive()) { $classes[] = 'active'; } if ($item->getIsLast()) { $classes[] = 'last'; } if ($item->getClass()) { $classes[] = $item->getClass(); } if ($item->hasChildren()) { $classes[] = 'has-dropdown'; } return $classes; }
/** * Get sidebar menu html * * @param string $outermostClass * @param string $childrenWrapClass * @return string */ public function getSidebarHtml($outermostClass = '', $childrenWrapClass = '') { Mage::dispatchEvent('page_block_html_topmenu_gethtml_before', array('menu' => $this->_menu, 'block' => $this)); $this->_menu->setOutermostClass($outermostClass); $this->_menu->setChildrenWrapClass($childrenWrapClass); $html = parent::_getHtml($this->_menu, $childrenWrapClass); Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array('menu' => $this->_menu, 'html' => $html)); return $html; }
/** * Recursively adds cms pages to top menu * * @param Varien_Data_Tree_Node $parentNode * @param Mage_Page_Block_Html_Topmenu $menuBlock * @param bool $addTags */ protected function _addHomePageToMenu($parentNode, $menuBlock, $addTags = false) { $tree = $parentNode->getTree(); $request = Mage::app()->getRequest(); $isActive = $request->getModuleName() == 'cms' && $request->getControllerName() == 'index' && $request->getActionName() == 'index'; $pageId = Mage::getStoreConfig(Mage_Cms_Helper_Page::XML_PATH_HOME_PAGE); $nodeData = array('name' => $menuBlock->__('Home'), 'id' => 'cms-node-' . $pageId, 'url' => Mage::getBaseUrl(), 'is_active' => $isActive); $categoryNode = new Varien_Data_Tree_Node($nodeData, 'id', $tree, $parentNode); $currentItems = array(); foreach ($parentNode->getChildren() as $child) { $currentItems[] = $child; $parentNode->removeChild($child); } $parentNode->addChild($categoryNode); foreach ($currentItems as $child) { $parentNode->addChild($child); } }
/** * include submenu items inside a div container with the possibility to add a static block there * * @param Varien_Data_Tree_Node $menuTree * @param string $childrenWrapClass * @return string */ protected function _getHtml(Varien_Data_Tree_Node $menuTree, $childrenWrapClass) { if (!Mage::helper('megamenu')->isMegaMenuEnabled()) { return parent::_getHtml($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 . '><span>' . $this->escapeHtml($child->getName()) . '</span></a>'; if ($child->hasChildren()) { if (!empty($childrenWrapClass)) { $html .= '<div class="' . $childrenWrapClass . '">'; } if ($childLevel == 0) { $html .= '<div class="submenu-container"><div class="container">'; } $grandChildren = $child->getChildren(); $grandChildrenCount = $grandChildren->count(); $columns = ceil($grandChildrenCount / 8); $columnsClass = 'columns' . $columns; $html .= '<ul class="level' . $childLevel . ' ' . $columnsClass . '">'; $html .= $this->_getHtml($child, $childrenWrapClass); $html .= '</ul>'; if ($childLevel == 0) { $staticBlock = $this->_getStaticBlockHtml($child); $html .= '<div class="static-container">' . $staticBlock . '</div>'; $html .= '</div></div>'; } $html .= '<div class="see-all"><a href="' . $child->getUrl() . '">All ' . $this->escapeHtml($child->getName()) . '</a></div>'; if (!empty($childrenWrapClass)) { $html .= '</div>'; } } $html .= '</li>'; $counter++; } return $html; }
public function _construct() { parent::_construct(); if (Mage::getStoreConfig('weltpixel_megamenu/general/enable')) { $this->_addHomeLink(); Mage::dispatchEvent('wp_page_block_html_topmenu_gethtml_before', array('menu' => $this->_menu, 'block' => $this)); $this->_menu->setOutermostClass('level-top'); $this->_menu->setPositionClass('nav'); $this->_menu->setChildrenWrapClass('wrapper-nav-columns'); } }
/** * 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); } }
protected function _toHtml() { if (!Mage::helper('jmmegamenu')->get('show')) { return parent::_toHtml(); } //bind data vars if has $attributes = get_object_vars($this->megaHelper->params); foreach ($attributes as $key => $value) { $data = $this->getData($key); if ($data) { $attributes[$key] = $data; } } $this->megaHelper->setParams($attributes); //set template $this->setTemplate("joomlart/jmmegamenu/output.phtml"); //get menu group id $menu_key = isset($this->megaHelper->params->menu_key) && $this->megaHelper->params->menu_key ? $this->megaHelper->params->menu_key : null; $menu_group_id = Mage::helper('jmmegamenu')->getMenuId($menu_key); $this->megaHelper->setParams(array('menu_group_id' => $menu_group_id)); if ($menu_group_id) { //get menu items $collections = Mage::getModel('jmmegamenu/jmmegamenu')->getCollection()->setOrder("parent", "ASC")->setOrder("ordering", "ASC")->addFilter("status", 1, "eq")->addFilter("menugroup", $menu_group_id); //built menu tree $tree = array(); foreach ($collections as $collection) { $collection->tree = array(); $parent_tree = array(); if (isset($tree[$collection->parent])) { $parent_tree = $tree[$collection->parent]; } //Create tree array_push($parent_tree, $collection->menu_id); $tree[$collection->menu_id] = $parent_tree; $collection->tree = $parent_tree; } $this->megaHelper->getList($collections); ob_start(); $this->megaHelper->genMenu(); $output = ob_get_contents(); $this->assign('menuoutput', $output); ob_end_clean(); } else { echo Mage::helper('jmmegamenu')->__('There are not menu items found.'); } return parent::_toHtml(); }
protected function _toHtml() { if (!Mage::helper('jmmegamenu')->get('show')) { return parent::_toHtml(); } //set template $this->setTemplate("joomlart/jmmegamenu/output.phtml"); //get menu id $menuType = $this->getData('menu_type'); $this->menu->menu_type = $menuType; $menuId = Mage::helper('jmmegamenu')->getMenuId($menuType); if ($menuId) { //get menu items $collections = Mage::getModel('jmmegamenu/jmmegamenu')->getCollection()->setOrder("parent", "ASC")->setOrder("ordering", "ASC")->addFilter("status", 1, "eq")->addFilter("menugroup", $menuId); //built menu tree $tree = array(); foreach ($collections as $collection) { $collection->tree = array(); $parent_tree = array(); if (isset($tree[$collection->parent])) { $parent_tree = $tree[$collection->parent]; } //Create tree array_push($parent_tree, $collection->menu_id); $tree[$collection->menu_id] = $parent_tree; $collection->tree = $parent_tree; } $this->menu->getList($collections); ob_start(); $this->menu->genMenu(); $menuoutput = ob_get_contents(); $this->assign('menuoutput', $menuoutput); ob_end_clean(); } else { echo Mage::helper('jmmegamenu')->__('Menu items not found.'); } return parent::_toHtml(); }
public function _toHtml() { if (!Mage::helper('jmmegamenu')->get('show')) { return parent::_toHtml(); } $this->setTemplate("joomlart/jmmegamenu/output.phtml"); $storeid = Mage::app()->getStore()->getStoreId(); $resource = Mage::getSingleton('core/resource'); $read = $resource->getConnection('core_read'); $menutable = $resource->getTableName('jmmegamenu_store_menugroup'); $query = 'SELECT menugroupid ' . ' FROM ' . $menutable . ' WHERE store_id = ' . (int) $storeid . ' ORDER BY id'; $rows = $read->fetchRow($query); if (!$rows["menugroupid"]) { $rows["menugroupid"] = 0; } $collections = Mage::getModel('jmmegamenu/jmmegamenu')->getCollection()->setOrder("parent", "ASC")->setOrder("ordering", "ASC")->addFilter("status", 1, "eq")->addFilter("menugroup", $rows["menugroupid"]); $tree = array(); foreach ($collections as $collection) { $collection->tree = array(); $parent_tree = array(); if (isset($tree[$collection->parent])) { $parent_tree = $tree[$collection->parent]; } //Create tree array_push($parent_tree, $collection->menu_id); $tree[$collection->menu_id] = $parent_tree; $collection->tree = $parent_tree; } $this->menu->getList($collections); //$this->menu->genMenu(); ob_start(); $this->menu->genMenu(); $menuoutput = ob_get_contents(); $this->assign('menuoutput', $menuoutput); ob_end_clean(); return parent::_toHtml(); }
/** * 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); } }
/** * Return the menu HTML * * @return string */ protected function _toHtml() { if (!$this->getTemplate()) { if ($this->_beforeToHtml() === false) { return ''; } return $this->getMenuHtml(); } return parent::_toHtml(); }
/** * {@inheritDoc} */ protected function _getMenuItemClasses(Varien_Data_Tree_Node $item) { $classes = parent::_getMenuItemClasses($item); if ($item->hasChildren() && $item->getLevel() == 0) { $classes[] = 'dropdown'; } return $classes; }
/** * {@inheritDoc} */ protected function _getMenuItemClasses(Varien_Data_Tree_Node $item) { $classes = parent::_getMenuItemClasses($item); if ($item->hasChildren()) { $classes[] = 'parent'; } return $classes; }
/** * {@inheritDoc} */ protected function _getMenuItemClasses(Varien_Data_Tree_Node $item) { return parent::_getMenuItemClasses($item); }
protected function _toHtml() { if (!Mage::helper('jmmegamenu')->get('show')) { return parent::_toHtml(); } //bind data vars if has $attributes = get_object_vars($this->megaHelper->params); foreach ($attributes as $key => $value) { $data = $this->getData($key); if ($data) { $attributes[$key] = $data; } } $this->megaHelper->setParams($attributes); //set template $this->setTemplate("joomlart/jmmegamenu/output.phtml"); $menuKey = isset($this->megaHelper->params->menu_key) && $this->megaHelper->params->menu_key ? $this->megaHelper->params->menu_key : null; //get cache status $cacheType = 'wavethemes_jmmegamenu'; $useCache = Mage::app()->useCache($cacheType); //get menu group id $cacheId = $this->getMenuGroupCacheId(); $cacheContent = Mage::app()->loadCache($cacheId); if ($useCache && $cacheContent) { $menuGroupId = $cacheContent; } else { $menuGroupId = Mage::helper('jmmegamenu')->getMenuId($menuKey); if ($useCache) { try { $tags = array(self::CACHE_TAG); $lifeTime = Mage::getStoreConfig('core/cache/lifetime') ? Mage::getStoreConfig('core/cache/lifetime') : $this->cacheLifeTime; Mage::app()->saveCache($menuGroupId, $cacheId, $tags, $lifeTime); } catch (Exception $e) { Mage::logException($e); } } } $this->megaHelper->setParams(array('menu_group_id' => $menuGroupId)); if ($menuGroupId) { $cacheId = md5("jmmegamenu_{$menuGroupId}_html_items"); $cacheContent = Mage::app()->loadCache($cacheId); if ($useCache && $cacheContent) { $output = unserialize($cacheContent); } else { $output = $this->_generateMenuHtml($menuGroupId); if ($useCache) { try { $tags = array(self::CACHE_TAG); $lifeTime = Mage::getStoreConfig('core/cache/lifetime') ? Mage::getStoreConfig('core/cache/lifetime') : $this->cacheLifeTime; $cacheContent = serialize($output); Mage::app()->saveCache($cacheContent, $cacheId, $tags, $lifeTime); } catch (Exception $e) { Mage::logException($e); } } } $this->assign('menuoutput', $output); } else { echo Mage::helper('jmmegamenu')->__('There are not menu items found.'); } return parent::_toHtml(); }