Привет, всем! Буду писать все свои действия с самого начала, чтобы было понятно.
Есть у меня responsive CSS3 меню такой вот структурой:
<ul>
<li>
<a href="#">
Меню
</a>
<div class="menu-dropdown"><!-- Выпадающий блок субменю -->
<ul class="drop-submenu">
<li>
<a href="#">Субменю</a><!-- Пункт субменю -->
</li>
<li class="multi-submenu">
<a href="#">Субменю</a><!-- Пункт субменю -->
<ul class="drop-submenu"><!-- Выпадающий блок субменю второго уровня-->
<li>
<a href="#">Суб-субменю</a>
</li>
</ul>
</li>
</ul>
</div>
</ul>
На первом уровне перед <ul class="drop-submenu"> есть div, а на втором его нет.
Чтобы реализовать такое меню с div я начал править файл default.php модуля меню. Сперва изменил:
// The next item is deeper.
if ($item->deeper)
{
echo '<ul class="nav-child unstyled small">';
}
на
// The next item is deeper.
if ($item->deeper)
{
echo '<div class="menu-dropdown"><ul class="drop-submenu">';
}
И конечно у меня после всех манипуляций в подпунктах меню, которые являются родителями других появился <div class="menu-dropdown"><ul class="drop-submenu">.
И чтобы убрать этот <div class="menu-dropdown"> из всех подпунктов, и оставить только на первом уровне я создал условие:
// The next item is deeper.
if ($item->deeper)
{
if ($item->level < 2) {
echo '<div class="menu-dropdown"><ul class="drop-submenu">';
}
elseif ($item->deeper) {
echo '<ul class="drop-submenu">';
}
}
elseif ($item->shallower)
{
// The next item is shallower.
echo '</li>';
echo str_repeat('</ul></li>', $item->level_diff);
}
else
{
// The next item is on the same level.
echo '</li>';
}
}
?>
</ul>
Вроде работает, но если условие выполняет <div class="menu-dropdown">, тогда не ясно откуда берется закрывающий тег </div>? видно система добавляет...
У кого-нибудь есть мысль, как создать условие по другому, чтобы после родительского пункта меню добавлялся <div class="menu-dropdown"> для подкатегории, а в подкатегориях нет добавлялся для следующих подуровней?