В общем пока лазил по сайтам - этом и том(drupal.org) - натыкался на массу вопросов по поводу выпадающего меню.
Так как модуль NiceMenu меня просто убил своим вариантом отображения, решил подсобить себе (попрактиковаться) и пролетариату (вдруг кому пригодится).
В общем модуль создаёт выпадающее меню которое корректно работает на Drupal 5.Х IE6 & Firefox2.0.0.6 (проверял)
IE7 как только поставлю - так и проверю.
Модуль принимает меню которые пользователь создаёт сам. Под такое меню он с лёгкой руки подписывает и Primary links.
Разобраться с Navigation оказалось большим геморроем, да и извращение это будет если его в раскрывающееся затолкать. Лучше в созданном своём меню сделать ссылку на пункт меню Navigation.
Выбирается меню в пункте настройки доступном по пути:
Administer->Site configuration->Drop menu appointed by user
В таблице variable БД создает строку со значением в поле name равным drop_menu_temp_options и строку со значением drop_menu_id
Вот, буду рад любой критике.
Кстати, по умолчанию пункты выглядят ужасающе - ибо стили не настраивал у них. Всёравно каждый будет подгонять под свою тему.
В скорости, если надо, выложу рисунок со структурой меню - чтобы легче было со стилями разбираться, ибо у мя там свой стиль для каждой "детальки".
Вложение | Размер |
---|---|
user_drop_menu.rar | 10.42 КБ |
Комментарии
нужный модуль
но сразувозник вопрос как сделать выпадающий список не горизонтальный а вертикальный?
и еще не большое замечание: readme файл все таки надо выкладывать
CSS - ом. Не внимательно смотрим в: документации
Например среди этого можно выбрать всё что душе угодно
югууууууууу. клас. именно то что нужно. спс
ibragim
readme будет через неделю(загруз на работе). По поводу вертикального выпадающего немного непонял: чтобы главные пункты были расположенны один под другим, или чтобы выпадали вниз? В общем-то первый вариант работает когда меню расположено в правом или левом столбце, а второй когда меню расположено врегионе наподобие footer или header.
PVasili,
Насколько я понял, нужно мои стили дооформить? Постараюсь в течении недели-двух (скорее двух), спасибо за ссылки.
ibragim
Рад что пригодилось.
пока не посмотрел, а можно, если в экран не влезает в обратную сторону разворачивать (например мама внизу экрана - детки развернутся вверх, как в винде)? если да - вынесу найсменю к черту, если нет - оставлю, и пробовать не буду - слишком много на него сил потратил, хоть и в опере до конца не одолел
Да, пока readme не сделал:
Так как пользователь может создать регион с любым названием, то блок иногда не сможет понять куда его разместили.
Блок определяет регионы по нескольким общеупотребительным названиям:
top
header
footer
bottom
right
left
Если вводится регион с новым названием, то необходимо указать модулю как его понимать(проще на кого из общих он похож).
Это также необходимо для того, чтобы модуль выдавал правильную верстку: для header&top - главные пункты в строчку, выпающие вываливаются в низ; для left главные пункты выводятся в несколько строк, выпадающие вываливаются вправо и т.д.
Объясняют модулю на что похож регион в файле config.conf
Он представляет из себя текстовый файл, скажем так, ini-формата.
Пример:
Создали новый регион с именем content_bottom. Он у нас, допустим, будет располагаться внизу страницы наподобие региона bottom(горизонтально), объясняем модулю что главные пункты надо выводить так же, как если бы мы меню располагали в регионе с именем bottom(главные в ряд, выпадающие вываливаются вверх):
[associations]
content_bottom = bottom
igdrasil@drupal.org
Пока нет. так что пока не сноси
Через месяц думаю сделаю. Хотя может и раньше, но я беру по максимому.
если что - пиши, я сейчас jQuery освоил неплохо, где смогу - помогу, а хорошее выпадающее меню всем нужно
спасибо, полезно
А кто-нибудь видел нормальное разворачивающееся меню (не выпадающее как тут) как в javascript tools, но без ajax? А то притормаживает загрузка ajax-ом, что и юзать не хочется это разворачивание...
igdrasil@drupal.org
Спасибо. Если что что-нить спрошу
Думаю на следующей неделе будет готов вашь вариант.
Но есть одно но - на медленных компах в IE притормаживать немного будет. В Firefox работает быстрее.
ЗЫ: IE - что с него возьмешь
Есть неплохой модуль SimpleMenu http://drupal.org/project/simplemenu - отображает вверху каждой страницы линейку меню с поддержкой выпадающего списка. Работает во всех броузерах, не тормозит совсем.
SimpleMenu, к сожалению, удобен только администраторам сайта, в дизайн, без переработки, его нереально вписать. но можно использовать как базу для написания своего модуля (код его я не смотрел, так что не могу утверждать, что это хорошая база)
Так, господа... Щас работаю над просьбой тов. igdrasil@drupal.org.
Возник трабл: кто мне подскажет как найти в IE аналог Firefox-овского window.scrollY ?
Я всю голову изломал.
Проще - надо узнать на сколько проскроленно окно. Весь затык в IE, под Firefox-ом просьба товарища работает, а под IE низнаю как
Затык в том что, по видимому, получить проскроленность окна в IE нельзя, если скролл возникает в, например, div-е который содержит весь контент. Можно конечно искать этот див и найти, но вот вопрос - целесообразно-ли? И может статься что по верстке меню будет совсем не в этом диве или не в диве вовсе...
Ждёмс советов. Вопрос еще на одном форуме разместил - там пока тишина
Так проблема решена...
Готово будет на следующей неделе, правда CSS останется таким же и пока без readme
Меню будет идти с совершенно диким фоном и бордюрами - дабы можно было увидеть что как оно выводить и есть ли "отражение".
Да, исправлю недостатки с правами - они раньше чисто номинальные были в модуле, от настроек совершенно не зависели.
спасибо, я тоже это искал.
Во общем выкладываю просьбу igdrasil@drupal.org-а.
Там же есть и структура и небольшой readme.
Я вроде как бы посмотрел-проверил, на первый взгляд работает. Но всё же с нетерпением жду багов
js-файл получился тяжёлым - 57кб против 17кб без отражения, так что имею мысль сделать два модуля - один с отражением, другой без. Пусть каждый выбирает то что ему нужно, ибо на мой взгляд довольно редко бывают ситуации когда необходимо отражение(оочень большое меню). Так же модуль без отражения меньше грузит браузер - на медленных компах однако заметно(видел лично).
Конечно js-файл попытаюсь облегчить - уберу все комментарии и ненужные пробелы, но не думаю что это даст ощутимый результат.
Вскорости выложу подправленный первый вариант (без отражения).
ЗЫ: а красивость при закачке файла реализована стандартным средством Drupal-а?
Я вот недавно заменил стандартное меню на сайте на nice_menus. Отличный модуль: 3 варианта меню для правой стороны страницы/левой/верха. Можно назначить произвольное количество блоков и в каждом выбрать подраздел меню, который будет обрабатываться этим модулем. навигацию модуль скушал просто на ура. косяков пока не нашел. Вот только оформление страдает... надо-бы посимпатичнее стиль прикрутить.
В чём мораль? Да в том что к замене стандартного меню на выпадающее меня подтолкнуло изменение в навигации (5-и уровневое меню ну никак не влезает в колонку) т.к. у меня 3-х колоночная вёрстка. А смысла городить огород из JS и CSS без поддержки навигации я не вижу вообще....
Fil
Попробую
Сделал вроде как - можно выбрать меню Navigation
Мдям.. Скажем прямо по сравнению с Nicemenu я опоздал
Ладно, хоть в коде попрактиковался
Есть еще модуль Lucid menu. Все работает. Недостатки:
Если бы не второе, было бы здорово.
Делал недавно просто разворачивающееся onclick меню, если кому интересно - вот реализация (левое меню), вот код:
<?php
$(document).ready( function() {
if(window.location.href.split("#")[0].split("/").length > 3) {
var path = '';
for(var i=3; i< window.location.href.split("#")[0].split("/").length;i++) {
path += "/" + window.location.href.split("#")[0].split("/")[i];
}
$("#block-menu-2 ul.menu").find("ul>li>a[href*=" + path + "]").parent().parent().toggle();
$("#block-menu-2 ul.menu").find("li>a[href*=" + path + "]").siblings('ul').toggle();
}
$("#block-menu-2 ul.menu").find("ul").toggle();
$("#block-menu-2 ul.menu>li.expanded>a").click(function() {$(this).parent().find('ul').slideToggle();return false; } );
$("#block-menu-2 ul.menu>li.expanded>a").dblclick(function() { window.location = this.href; } );
}
);
?>
а почему все забыли за dhtml_menu?
А куда этот код пихать?
Мне как раз такое ОЧЕНЬ надо.