function MageBridgeMenuPrintTree($tree, $level = 0, $params = null) { // If the tree is invalid, do not continue if (!is_array($tree) || count($tree) == 0) { return; } $i = 0; ?> <ul> <?php foreach ($tree as $item) { ?> <?php $class = modMageBridgeMenuHelper::getCssClass($params, $item, $level, $i, $tree); ?> <li class="<?php echo $class; ?> "> <a href="<?php echo $item['url']; ?> " class="<?php echo $class; ?> "><span><?php echo $item['name']; ?> </span></a> <?php if ($params->get('include_product_count') == 1 && isset($item['product_count'])) { ?> (<?php echo (int) $item['product_count']; ?> )<?php } ?> <?php if ($item['is_active']) { echo MageBridgeMenuPrintTree($item['children'], $level + 1, $params); } ?> </li> <?php $i++; ?> <?php } ?> </ul> <?php }
/** * Helper-method to return a CSS-class string * * @access public * @param JParameter $params * @param array $item * @param int $level * @param int $counter * @param array $tree * @return string */ public static function getCssClass($params, $item, $level, $counter, $tree) { $current_category_id = modMageBridgeMenuHelper::getCurrentCategoryId(); $current_category_path = modMageBridgeMenuHelper::getCurrentCategoryPath(); $class = array(); if (isset($item['entity_id'])) { if ($item['entity_id'] == $current_category_id) { $class[] = 'current'; $class[] = 'active'; } elseif (in_array($item['entity_id'], $current_category_path)) { $class[] = 'active'; } $class[] = 'category-' . $item['entity_id']; $class[] = 'category-' . $item['url_key']; } if (isset($item['children_count']) && $item['children_count'] > 0) { $class[] = 'parent'; } if ($params->get('css_level', 0) == 1) { $class[] = 'level' . $level; } if ($params->get('css_firstlast', 0) == 1) { if ($counter == 0) { $class[] = 'first'; } if ($counter == count($tree)) { $class[] = 'last'; } } if ($params->get('css_evenodd', 0) == 1) { if ($counter % 2 == 0) { $class[] = 'even'; } if ($counter % 2 == 1) { $class[] = 'odd'; } } $class = array_unique($class); $class = implode(' ', $class); return $class; }
/** * Joomla! module MageBridge: Catalog Menu * * @author Yireo (info@yireo.com) * @package MageBridge * @copyright Copyright 2015 * @license GNU Public License * @link http://www.yireo.com */ // No direct access defined('_JEXEC') or die('Restricted access'); // Import the MageBridge autoloader require_once JPATH_SITE . '/components/com_magebridge/helpers/loader.php'; require_once dirname(__FILE__) . '/helper.php'; // Read the parameters $root = $params->get('root', 0); $levels = $params->get('levels', 2); $startLevel = $params->get('startlevel', 1); if ($startLevel < 1) { $startLevel = 1; } $endLevel = $startLevel + $levels - 1; $layout = $params->get('layout', 'default'); // Call the helper $catalog_tree = modMageBridgeMenuHelper::build($params); // Load the catalog-tree $rootLevel = !empty($catalog_tree['level']) ? $catalog_tree['level'] : 0; $catalog_tree = modMageBridgeMenuHelper::setRoot($catalog_tree, $root); $catalog_tree = modMageBridgeMenuHelper::parseTree($catalog_tree, $rootLevel + $startLevel, $rootLevel + $endLevel); // Show the template require JModuleHelper::getLayoutPath('mod_magebridge_menu', $layout);
public function parseTree($tree, $endLevel = 99) { if (is_array($tree) && count($tree) > 0) { foreach ($tree as $index => $item) { if (empty($item)) { unset($tree[$index]); continue; } // Remove disabled categories if ($item['is_active'] != 1) { unset($tree[$index]); continue; } // Remove categories that should not be in the menu if (isset($item['include_in_menu']) && $item['include_in_menu'] != 1) { unset($tree[$index]); continue; } // Remove items from the wrong level if ($item['level'] >= $endLevel) { unset($tree[$index]); continue; } // Handle HTML-entities in the title if (isset($item['name'])) { $item['name'] = htmlspecialchars($item['name']); } // Parse the children-tree if (!empty($item['children'])) { $item['children'] = modMageBridgeMenuHelper::parseTree($item['children'], $endLevel); } else { $item['children'] = array(); } // Translate the URL into Joomla! SEF URL if (empty($item['url'])) { $item['url'] = ''; } else { $item['url'] = MageBridgeUrlHelper::route($item['url']); } $tree[$index] = $item; } } return $tree; }
<?php /** * Joomla! module MageBridge: Catalog Menu * * @author Yireo (info@yireo.com) * @package MageBridge * @copyright Copyright 2012 * @license GNU Public License * @link http://www.yireo.com */ // No direct access defined('_JEXEC') or die('Restricted access'); // Import the MageBridge autoloader require_once JPATH_SITE . '/components/com_magebridge/helpers/loader.php'; require_once dirname(__FILE__) . '/helper.php'; // Read the parameters $root = $params->get('root', 0); $levels = $params->get('levels', 2); // Call the helper $catalog_tree = modMageBridgeMenuHelper::build($params); // Determine the appropriate settings $catalog_tree = modMageBridgeMenuHelper::setRoot($catalog_tree, $root); if (!empty($catalog_tree[0]['level'])) { $levels = $catalog_tree[0]['level'] + $levels; } $catalog_tree = modMageBridgeMenuHelper::parseTree($catalog_tree, $levels); require JModuleHelper::getLayoutPath('mod_magebridge_menu');