Good time of day!
Having dealt with JS, I encountered the following problem. Not good in PHP, I don’t know how to assign a unique class to each item of UL.
<?php defined('_JEXEC') or die; require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'functions.php'; // Note: it is important to remove spaces between elements. $tag = ($params->get('tag_id') != NULL) ? ' id="' . $params->get('tag_id') . '"' : ''; if (isset($attribs['name']) && $attribs['name'] == 'user3') { $menutype = 'horizontal'; $start = $params->get('startLevel'); // check if it is necessary to render subitems: $subitems = $GLOBALS['artx_settings']['menu']['show_submenus'] && 1 == $params->get('showAllChildren'); // true - skip the current node, false - render the current node. $skip = false; echo '<ul class="hmenu"' . $tag . '>'; foreach ($list as $i => & $item) { if ($skip) { if ($item->shallower) { if (($item->level - $item->level_diff) <= $limit) { echo '</li>' . str_repeat('</ul></li>', $limit - $item->level + $item->level_diff); $skip = false; } } continue; } $class = 'item-' . $item->id; $class .= $item->id == $active_id ? ' current' : ''; $class .= ('alias' == $item->type && in_array($item->params->get('aliasoptions'), $path) || in_array($item->id, $path)) ? ' active' : ''; $class .= $item->deeper ? ' deeper' : ''; $class .= $item->parent ? ' parent' : ''; echo '<li class="' . $class . '">'; // Render the menu item. switch ($item->type) { case 'separator': case 'url': case 'component': require JModuleHelper::getLayoutPath('mod_menu', 'default_' . $item->type); break; default: require JModuleHelper::getLayoutPath('mod_menu', 'default_url'); break; } if ($item->deeper) { if (!$subitems) { $limit = $item->level; $skip = true; continue; } echo '<ul class="dropmenu">'; } elseif ($item->shallower) echo '</li>' . str_repeat('</ul></li>', $item->level_diff); else echo '</li>'; } echo '</ul>'; } else if (0 === strpos($params->get('moduleclass_sfx'), 'vmenu') || false !== strpos($params->get('moduleclass_sfx'), ' vmenu')) { $menutype = 'vertical'; $start = $params->get('startLevel'); // check if it is necessary to render subitems: $subitems = $GLOBALS['artx_settings']['vmenu']['show_submenus'] && 1 == $params->get('showAllChildren'); // true - skip the current node, false - render the current node. $skip = false; // limit of rendering - skip items when a level is exceeding the limit. $limit = $start; echo '<ul class="vmenu"' . $tag . '>'; foreach ($list as $i => & $item) { if ($skip) { if ($item->shallower) { if (($item->level - $item->level_diff) <= $limit) { echo '</li>' . str_repeat('</ul></li>', $limit - $item->level + $item->level_diff); $skip = false; } } continue; } $class = 'item-' . $item->id; $class .= $item->id == $active_id ? ' current' : ''; $class .= ('alias' == $item->type && in_array($item->params->get('aliasoptions'), $path) || in_array($item->id, $path)) ? ' active' : ''; $class .= $item->deeper ? ' deeper' : ''; $class .= $item->parent ? ' parent' : ''; echo '<li class="' . $class . '">'; // Render the menu item. switch ($item->type) { case 'separator': case 'url': case 'component': require JModuleHelper::getLayoutPath('mod_menu', 'default_' . $item->type); break; default: require JModuleHelper::getLayoutPath('mod_menu', 'default_url'); break; } if ($item->deeper) { if (!$subitems) { $limit = $item->level; $skip = true; continue; } echo '<ul' . ($subitems && in_array($item->id, $path) ? ' class="dropmenu"' : '') . ' >'; } elseif ($item->shallower) echo '</li>' . str_repeat('</ul></li>', $item->level_diff); else echo '</li>'; } echo '</ul>'; } else { $menutype = 'default'; echo '<ul class="menu' . $params->get('class_sfx') . '"' . $tag . '>'; foreach ($list as $i => &$item) { $class = 'item-' . $item->id; $class .= $item->id == $active_id ? ' current' : ''; $class .= ('alias' == $item->type && in_array($item->params->get('aliasoptions'), $path) || in_array($item->id, $path)) ? ' active' : ''; $class .= $item->deeper ? ' deeper' : ''; $class .= $item->parent ? ' parent' : ''; echo '<li class="' . $class . '">'; // Render the menu item. switch ($item->type) { case 'separator': case 'url': case 'component': require JModuleHelper::getLayoutPath('mod_menu', 'default_'.$item->type); break; default: require JModuleHelper::getLayoutPath('mod_menu', 'default_url'); break; } if ($item->deeper) echo '<ul class="dropmenu">'; elseif ($item->shallower) echo '</li>' . str_repeat('</ul></li>', $item->level_diff); else echo '</li>'; } echo '</ul>'; } I understood only that these strings are responsible for the class name.
if ($item->deeper) { if (!$subitems) { $limit = $item->level; $skip = true; continue; } echo '<ul class="dropmenu">'; } elseif ($item->shallower) echo '</li>' . str_repeat('</ul></li>', $item->level_diff); else Please tell me how to add a +1 or text value to the class name to make it dropmenu1, dropmenu2, dropmenu3, and so on.
I tried using JS, but the script for which classes are needed all the classes N + 1 counts for one. Thank!