Определение пользовательского макета и класса для каждого уровня меню joomla

#php #jquery #joomla #menu

#php #jquery #joomla #меню

Вопрос:

Я хочу добавить пользовательский макет и класс на уровни меню joomla.

Это и есть тот самый default.php коды моего меню

 <nav class="uk-navbar <?php echo $class_sfx; ?>" id="ad-menubar">
<ul class="uk-navbar-nav">
<?php foreach ($list as $i => amp;$item){
    $class = 'ad-menu-item item-' . $item->id;
    $attribute = '';

    if ($item->id == $default_id)
    {
        $class .= ' default';
    }


    if (($item->id == $active_id) || ($item->type == 'alias' amp;amp; $item->params->get('aliasoptions') == $active_id))
    {
        $class .= ' current';
    }

    if (in_array($item->id, $path))
    {
        $class .= ' uk-active';
    }
    elseif ($item->type == 'alias')
    {
        $aliasToId = $item->params->get('aliasoptions');

        if (count($path) > 0 amp;amp; $aliasToId == $path[count($path) - 1])
        {
            $class .= ' active';
        }
        elseif (in_array($aliasToId, $path))
        {
            $class .= ' alias-parent-active';
        }
    }

    if ($item->type == 'separator')
    {
        $class .= ' divider';
    }

    if ($item->deeper)
    {
        $class .= ' deeper';
    }

    if ($item->parent)
    {
        $class .= ' uk-parent';
        $attribute = "data-uk-dropdown="{justify:'#ad-menubar', mode:'click'}"";
    }

    echo '<li class="' . $class . '" '. $attribute .'>';

    switch ($item->type) :
        case 'separator':
        case 'component':
        case 'heading':
        case 'url':
            require JModuleHelper::getLayoutPath('mod_menu', 'default_' . $item->type);
            break;

        default:
            require JModuleHelper::getLayoutPath('mod_menu', 'default_url');
            break;
    endswitch;

    // The next item is deeper.
    if ($item->deeper)
    {
        echo '<div class="uk-dropdown uk-dropdown-navbar"><ul class="uk-nav uk-nav-navbar">';
    }
    // The next item is shallower.
    elseif ($item->shallower)
    {
        echo '</li>';
        echo str_repeat('</ul></div></li>', $item->level_diff);
    }
    // The next item is on the same level.
    else
    {
        echo '</li>';
    }
}
?>
</ul>
</nav>
  

его более глубокие уровни, сгенерированные с помощью этого кода

 if ($item->deeper)
    {
        echo '<div class="uk-dropdown uk-dropdown-navbar"><ul class="uk-nav uk-nav-navbar">';
    }
    // The next item is shallower.
    elseif ($item->shallower)
    {
        echo '</li>';
        echo str_repeat('</ul></div></li>', $item->level_diff);
    }
    // The next item is on the same level.
    else
    {
        echo '</li>';
    }
  

Я хочу добавить пользовательские разделы и классы к каждому уровню выпадающего списка, например, я хочу сделать меню третьего уровня многоколоночным, как я мог бы определить разделы каждого уровня, пожалуйста, помогите мне, мне это нужно сейчас, это очень важно…

Ответ №1:

Отредактируйте каждый пункт меню в диспетчере меню и введите класс страницы на вкладке Отображение страницы.

Затем у вас будут уникальные классы селекторов в CSS, чтобы применять любой стиль, который вы пожелаете.

Комментарии:

1. нет, нет, я не хочу этого, я хочу сделать пункты выпадающего меню разноцветными, но не с помощью css flex с divs, пожалуйста, помогите мне в этом