Вы здесь

Drupal - Урок пятый - Меню и то с чем его едят. Создание выпадающих меню, и развертывающихся без перезагрузки страницы.

Прошлый урок был непрост. Поэтому сегодня мы слегка пофилоним ) Давайте разберемся с такой важной частью сайта, как меню. Создание меню настолько же универсально в Drupal, как и все остальное. Урок проводится на чистом сайте Drupal-6.13, на английском языке из дополнительных модулей только Pathauto. Управление меню сконцентрировано в «Administer › Site building › Menus».


В самом верху мы видим 3 управляющие кнопки: List menus (Вывести список меню системы), Add menus (Создать новое меню), Settings (Опции, вернемся к ним чуть позже).
Изначально в Drupal создано 3 меню: Navigation, Primary links, Secondary links. Первое из них основное, оно включено по умолчанию (на самом деле работают все 3, но пункты\подпункты есть только в первом) и отображается так (Если вы вошли на сайт под профилем администратора, у простых смертных меню изначально поменьше, но сути это не меняет):



Кроме стандартных меню, вы можете создать сколь угодно много своих, при создании к нему сразу же создается блок, и его можно поместить в любой регион (справочка: окно сайта в Drupal делится на регионы, а в них уже вставляются блоки). Внимательный читатель заметит - «Для чего же созданы меню  Primary links и Secondary links, если они изначально пустые, и я могу создать сколько захочу таких же?». Как я понимаю, основная причин в том, что почти любой дизайн Drupal, включает 2 региона созданных специально для меню, у них свой внешний вид, и они более подходят под дизайн стилистически, давайте попробуем добавить в меню   Primary links и Secondary links по пункту, и посмотреть как же эти меню будут выглядеть в стандартной теме Drupal. Кликаем по ссылке  Primary links.


Сверху так же 3 кнопки: List items (список пунктов меню), Add items (Добавить пункт), Edit menu (Редактировать меню). Нажимаем Add items.


И видим окно добавления меню:
Path — адрес страницы на которое ведет меню, сейчас для нас не важно, но поле обязательно, по этому введите (например) — «node», и меню будет ссылаться на материалы (это главная страница по умолчанию).
Menu link title — как будет выглядеть этот пункт в меню, пусть будет «О авторе».
Enabled — включен ли пункт меню.
Expanded — если у пункта есть подпункты, то он будет по умолчанию развернут.
Parent item — к какому меню прицепим пункт..
Weight — вес пункта, нужен для задания расположения пунктов относительно друг друга. Легкие идут в начале, тяжелые в конце.
Сохраним, и проделаем тоже самое с  Secondary links, только в Menu link title забьем «Автор о вас». У меня получилось так:


В теме которая установлена на этом блоге, аналогичные пункты меню выгледят так:


По желанию в эти регионы можно вставить любое меню, это можно настроить в «Administer › Site building › Menus › Settings».


Default menu for content — для любой добавленной записи можно создать ссылку в меню, этот параметр определяет какое меню там будет по умолчанию.
Source for the primary links — задаем какое менюбудет в первом регионе.
Source for the secondary links — задаем какое меню во втором регионе.
Для примера давайте вставим в Source for the primary links  меню Navigation.


Попробуем создать свое меню.

Создайте меню, я назвал его "Первый пошел".
Создаем контент типа «Page» (Create content > Page)
Title — введите «Пункт 1», «Body» можно не вводить.
Во вкладке «Menu settings» вбейте «Menu link title:» - «Пункт 1», это то как будет отображаться наше меню. «Parent item» - выберете «Первый пошел», и сохраните. Теперь перейдите в «Administer › Site building › Block», найдите блок «Первый пошел», и вставьте его в лодин из регионов, я перетащил в «Left sidebar».


Сохраните. В левом регионе отобразился наш блок.


Теперь добавьте еще 2 страницы, но «Parent item» поменяйте на «Пункт 1». У меня вышло так:


Если вы хотите добавить пункт меню на уже существующий материал, то это можно сделать в «Administer › Site building › Menus», прсто войдите в меню в которм хотите добавить пункт, и нажмите «Add item». В поле «Path» укажите путь к вашему материалу.

Кроме того, в Drupal множество модулей улучшающих внешний вид меню, рассмотрим некоторые из них.

Nice menus
Функционально, и симпатично, создает выпадающие, при наведении на них мыши, меню. Можно сделать их выпадающими как горизонтально, так и вертикально.



DHTML Menu
Все меню раскрываются без перезагрузки страницы. Крайне удобно, несколько раз использовал.

YUI Menu
Выпадающее многоуровневое меню.

Большое количество модулей вы сможете найти на сайте drupal org, неполный список можно найти здесь.

На этом урок закончен.

Оставайтесь на линии, уроки о том как создать сайт на Drupal еще не окончены -)

Комментарии

Большое спасибо за урок. Научите пожалуйста ка подключать модули, например Nice menus.
заранее спасибо!

Незачто -)

Скачиваете модуль, разорхивируете его в папку ВАШ_САЙТ/sites/all/modules (если папки modules нету, создайте ее), далее заходите в Управление-конструкция сайта-модули, устанавливаете галочку на нужном, и сохраняете.

у меня почему-то не разворачиваются те пункты которые я добавил (они содержат подпункты), т.е. они либо постоянно свернуты, либо постоянно развернуты (если в настройках пункта отметить "развернутый"), при этом меню, которое изначально есть в друпале разворачивается и сворачивается. В чем может быть проблема и как ее решить?
Заранее спасибо

А каким образом создавали меню, и на что ссылаются элементы? 

У меня почему-то такая же проблема. Второй день колупаюсь, делаю чисто по представленному Вами ману. В голом сайте с дефолтной темой, без плагинов для создания разворачиюващегося меню я набиваю минимальный контент, затем формирую многоуровневое меню. После этого добавляю меню в левую колонку. Если стоит галка "Развернутый" в многоуровневом пункте - меню отображается корректно. Если галка не стоит, то показывается, что меню выпадающее, но при этом при наведении/нажатии подпункты не выпадают.

Видел уже раза 3, что люди описывали такую проблему, в выходные постараюсь разобраться.

Обернул менюшку в NiceMenus, загрузил в LeftSideBar - все отлично выпадает. =)

Это один из вариантов, хотя это уже костыли, должно и так работать.