Сейчас поговорим о том, как за 2 минуты сделать своё выпадающее меню, не обделённое мозгами, на скриптах, не прибегая к дополнительным модулям.
Допустим, у нас есть такое праймари меню:
- Топ 100
- Графика
- Абстракция
- Кино
- Компьютерная графика
Задача.
При нажатии на пункт меню, который не имеет подменю, должна открываться новая страница (как в обычном меню). А если пункт меню имеет подменю, то страница не должна открываться, а должно выезжать подменю. Надо написать "умный" скрипт, который будет за этим следить.
Решение
Сначала выводим в нужное нам место праймари меню. Можно через блок, можно через page.tpl.php, кому как удобнее. Я обычно вывожу вторым способом:
<?php if ($primary_links): ?> <div id = "menu"><?php print menu_tree('primary-links'); ?></div> <?php endif; ?>
В общем, вывели меню. Для него подойдёт следующий css:
div#menu ul { padding: 0; } div#menu ul li { display: block; border-bottom: 1px solid #211f1b; margin-bottom: 5px; padding: 0; } div#menu ul li a { color:#211F1B; display:block; font-family:Verdana; font-size:18px; font-weight:bold; padding:5px 0; } div#menu ul li a:hover, div#menu ul li a.active, div#menu ul li a:active { color: #005693; text-decoration: none; outline: none; } div#menu ul ul { display: none; /* собственно, самое важное :) */ } div#menu ul ul li { border: none; margin: 0; } div#menu ul ul li a { font-size: 11px; padding-left: 20px; } div#menu ul ul li a:hover, div#menu ul ul li.active-trail a { background: #b7b7b7; color: #fff; } div#menu ul ul li.active-trail ul li a { background: #fff; color: #000; }
Теперь осталось создать скрипт, который будет раздвигать пункты меню, имеющие подменю. Создаём файл menu.js и добавляем туда такой текст:
$(document).ready(function() { $('div#menu>ul>li>a').click(function() { if ($(this).parent().find('ul').length) { $(this).parent().find('ul').slideToggle(200); return false; } }); });
Подключаем наш скрипт в шаблон. Чистим кэш. Проверяем, наслаждаемся.
Таким же образом можно сделать и горизонтальное меню, слегка поменяв css.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии