Трехуровневое выпадающее меню на CSS
Материал из Umicms
Версия от 14:48, 6 февраля 2014; PilipenkAV (обсуждение | вклад)
1.Создаем файл menu.css со стилями, подключаем его в теге head. Следим за тем, чтобы прописываемые правила не конфликтовали с уже имеющимися на сайте.
ul#cssmenu {
        margin: 0;
        border: 0 none;
        padding: 0;
        list-style: none;
        background: #003366;
        height: 30px;
        font: bold 12px/28px Verdana, Arial;
        border-left:#003366 1px solid;
}
ul#cssmenu li {
        margin: 0;
        border: 0 none;
        padding: 0;
        float: left;
        display: inline;
        list-style: none;
        position: relative;
        height: 30px;
}
ul#cssmenu ul {
        margin: 0;
        border: 0 none;
        padding: 0;
        width: 160px;
        list-style: none;
        display: none;
        position: absolute;
        top: 30px;
        left: 0;
}
ul#cssmenu ul:after {
        clear: both;
        display: block;
        font: 1px/0px serif;
        content: ".";
        height: 0;
        visibility: hidden;
}
ul#cssmenu ul li {
        width: 170px;
        float: left;
        display: block !important;
        display: inline;
}
/* Main Menu */
ul#cssmenu a {
        border: 0px;
        padding: 0 10px;
        float: none !important;
        float: left;
        display: block;
        background: #003366;
        color: #FFFFFF;
        font: bold 12px/28px Verdana, Arial;
        text-decoration: none;
        height: auto !important;
        height: 1%;
}
/* Main Menu Hover */
ul#cssmenu a:hover,
ul#cssmenu li:hover a,
ul#cssmenu li.iehover a {
        background: #FFFFFF;
        color:#003366;
        border-top:#003366 1px solid;
}
/* Second Menu */
ul#cssmenu li:hover li a,
ul#cssmenu li.iehover li a {
        border-top: 2px solid #FFFFFF;
        float: none;
        background: #003366;
        color: #FFFFFF;
}
/* Second Menu Hover */
ul#cssmenu li:hover li a:hover,
ul#cssmenu li:hover li:hover a,
ul#cssmenu li.iehover li a:hover,
ul#cssmenu li.iehover li.iehover a {
        border-top: 2px solid #FFFFFF;
        background: #FFFFFF;
        color:#003366;
        border:#003366 1px solid;
}
ul#cssmenu ul ul {
        display: none;
        position: absolute;
        top: 0;
        left: 170px;
}
ul#cssmenu li:hover ul ul,
ul#cssmenu li.iehover ul ul {
        display: none;
}
ul#cssmenu li:hover ul,
ul#cssmenu ul li:hover ul,
ul#cssmenu li.iehover ul,
ul#cssmenu ul li.iehover ul {
        display: block;
}
2.Создаем шаблон tpls/content/menu/drop.tpl со следующим содержанием:
<?php
$FORMS = Array();
$FORMS['menu_block_level1'] = <<<END
 <ul id="cssmenu">
    %lines%
   </ul>
END;
$FORMS['menu_line_level1'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;
$FORMS['menu_line_level1_a'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;
$FORMS['menu_block_level2'] = <<<END
 <ul>
  %lines%
 </ul>
END;
$FORMS['menu_line_level2'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;
$FORMS['menu_line_level2_a'] = <<<END
 <li><a href="%link%">%text%</a>
 %sub_menu%
 </li>
END;
$FORMS['menu_block_level3'] = <<<END
  <ul>
   %lines%
  </ul>
END;
$FORMS['menu_line_level3'] = <<<END
 <li><a href="%link%">%text%</a></li>
END;
$FORMS['menu_line_level3_a'] = <<<END
 <li><a href="%link%">%text%</a></li>
END;
?>
3.Прописываем в шаблоне страницы макрос вывода меню
%content menu('drop', 3)%
Важно, чтобы вторым параметром было указано число не меньше 3-х, иначе выпадание работать не будет. Также, следим за тем, чтобы у страниц, выводящихся в меню, были проставлены опции "показывать подменю" и "меню всегда развернуто".