меню

УрокВывод подменю при клике на пункт меню верхнего уровня

О чём я хочу сегодня поговорить - это о том, как выводить подменю, при нажатии на пункт меню. Вот что я имею ввиду: допустим, у нас есть такая структура у меню:

  • пункт 1

    • подпункт 1.1
    • подпункт 1.2
    • подпункт 1.3
  • пункт 2
  • пункт 3
    • подпункт 3.1
    • подпункт 3.2

И выводится только верхние пункты - то есть пункт 1, пункт 2, пункт 3. При клике на пункт 1 у нас появится блок, содержащий подпункт 1.1, подпункт 1.2, подпункт 1.3. По клику на пункт 2 - ничего не появится (т.к. этот пункт не содержит подменю). Кликнув на пункт 3 мы получим подпункт 3.1 и подпункт 3.2. Надеюсь, суть понятна. Если нет - вот тут реализованно такое меню. Покликайте по пунктам - увидите

Реализация

УрокВыпадающее праймари (секондари) горизонтальное меню

В прошлом уроке я писал о создании вертикального меню. Однако оно только при клике. И без закруглений. Кому-то оно может быть очень полезным, но большинству сайтов требуется более стандартное меню - горизонтальное, выпадающее, с закруглениями. Причём эти закругления должны подгружаться без задержек.

Итак, сначала выводим меню также как и в предыдущем уроке (в page.tpl.php):

<?php if ($primary_links): ?>
  <div id = "menu"><?php print menu_tree('primary-links'); ?></div>
<?php endif; ?>
?>

Важное замечание: чтобы выводилось подменю, надо перейти в раздел /admin/build/menu-customize/primary-links и у пунктов, имеющих подменю, поставить галочку напротив развёрнутое(expanded), иначе оно не покажется.

Урок"Умное" раскрывающееся вертикальное меню на jquery за 2 минуты

Сейчас поговорим о том, как за 2 минуты сделать своё выпадающее меню, не обделённое мозгами, на скриптах, не прибегая к дополнительным модулям.

Допустим, у нас есть такое праймари меню:

  • Топ 100
  • Графика
    • Абстракция
    • Кино
    • Компьютерная графика

Задача.
При нажатии на пункт меню, который не имеет подменю, должна открываться новая страница (как в обычном меню). А если пункт меню имеет подменю, то страница не должна открываться, а должно выезжать подменю. Надо написать "умный" скрипт, который будет за этим следить.

Решение
Сначала выводим в нужное нам место праймари меню. Можно через блок, можно через page.tpl.php, кому как удобнее. Я обычно вывожу вторым способом:

<?php if ($primary_links): ?>
  <div id = "menu"><?php print menu_tree('primary-links'); ?></div>
<?php endif; ?>

УрокНемного о выводе меню через шаблон

Поговорим немного о том, как выводить меню через тему. Обычно это выводится через файл page.tpl.php вот такой строкой кода:

<?php echo theme('links', $primary_links); ?>

Если нам надо поменять вывод ссылок, то нам понадобится функция theme_links(), которую можно найти в файле theme.inc в папке drupal/includes. Достаточно запихнуть эту функцию в файл template.php своей темы, изменив название theme_links на имяТемы_links - и подхватываться будет именно ваше выполнение этой функции, а не дефолтное.

Прошу обратить внимание, что вывод через theme('links', $primary_links) выводит только верхний уровень меню. Чтобы вывести меню со всеми его дочерними элементами, надо воспользоваться функцией menu_tree('primary-links'), то есть написать

<?php echo menu_tree('primary-links'); ?>