Юзабилити-меню для InstantCMS

+7
2.43K
Работая над юзабилити-шаблоном для Инстанта стал переделывать главное меню. Решение получилось вполне пригодное для самостоятельного отдельного хака, коим спешу поделиться с сообществом.

Предпосылки:

Что лично меня не устраивало в существующем главном меню?

1) Названия разделов, содержащие подменю, визуально не отличаются от стандартных пунктов меню.
Иллюстрация
2) Пункты меню, раскрывающие подменю, не ведут на страницы сайта и если нужно структурировать информацию это сделать будет не очень удобно. Например, пункт меню "Магазин" и подпункты "Текстиль" и "Галантерея", один из которых также имеет свое подменю. Чтобы вывести весь список нам придется создавать еще один подпункт "Все товары". Это не совсем удобно с точки зрения структурирования информации. Это лечится отключением джаваскрипт в настройках модуля, но для больших меню это крайне неудобно.
3) На раздел, содержащий подменю нужно нажимать ( а хочется, чтобы он автоматом раскрывался при наведении указателя мыши)

Постановка задачи:

1) При включении и отключении и джаваскрипта структура меню не должна меняться.
2) Все пункты меню, в т.ч. являющиеся разделами, должны вести на страницы сайта.
3) Разделы, содержащие подменю, должны визуально выделяться (напр. полужирным шрифтом).
4) Подменю должны раскрываться при наведении указателя мыши на родительский пункт.
5) Раскрытия подменю НЕ должно происходить, если указатель мыши случайно пробежал над названием раздела.
6) При уходе внимания (указателя мыши) с меню все подпункты должны автоматически скрываться.
7) Приветствуется использование анимированных эффектов.
8) Решение должно минимально "вторгаться" в код системы и, по возможности, быть универсальным.

Результат:

В итоге получилось удобное и практичное меню, с лаконичным кодом скрипта. Хак затрагивает только один файл шаблона меню с минимальной модификацией и минимальным риском потери работоспособности после обновления системы.
Решение разрабатывалось мной для другого шаблона, а на дефолтный стало с корректировкой всего нескольких строк (шаблона меню). Соответственно высока вероятность безпроблемной интеграции в пользовательские шаблоны.
Скпипт, обслуживающий новое меню, внедрен в "тело" шаблона, по причине минимализма. При необходимости его очень легко можно вынести в отдельный файл.
В срипте настраивается скорость анимации при раскрытии и сокрытии подменю, а также время, на которое нужно задержать указатель мыши над родительским пунктом для раскрытия подменю.
В заключение могу добавить, что замена существующего меню на данное в оф. релизе, возможно позволит отказаться от сравнительно громоздкого кода, обслуживающего меню нынешнее.

Скин нового меню ниже, а поюзать его можно на демо-сайте.

Информация добавлена в каталог дополнений, где, собственно, и ссылка на скачивание.

Иллюстрация
0
lezginka.ru lezginka.ru 14 лет назад #
а их ПС кушают как "открытые" ссылки ?
это важно с точки зрения сео.
решения полезно, однозначно!
0
neart neart 14 лет назад #
Точно ответить не могу. Подменю выводятся со стилевым атрибутом style="display:none". Если в таком варианте ПС это не "кушает", то исправить ситуацию проще простого. Только если задавать изначально видимые блоки, то это может быть немного несимпатично, когда будет загружаться развернутое меню, а затем будут скрываться подразделы.
0
14 лет назад #
После перехода на нужный уровень все меню сворачивается в первоначальный вид. Логичнее было бы, если бы сворачивались все кроме пункта меню, в подразделе которого мы находимся в данный момент. Немножко путанно, но надеюсь, понятно о чем я говорю
0
neart neart 14 лет назад #
Это абсолютно несложно сделать, но лично я придерживаюсь противоположного мнения. Не вижу смысла держать подменю развернутым, если с одной стороны есть глубиномер, а с другой - в любой момент пользователю достаточно просто пробежаться мышкой по меню, чтобы найти соседний пункт. Если на то пошло, то можно родительский пункт меню выделять другим цветом, но это будет стилевой разнобой. При постановке задачи думал над тем, о чем Вы пишите, но решил что в этом случае будет проигрыш в других вещах.
0
14 лет назад #
Тогда давайте дадим возможность выбора через админку (скрывать/не скрывать). Ведь такое меню будет явно восстребованным, стоит подумать над небольшим расширением его функционала
0
neart neart 14 лет назад #
ИМХО, эта игра не стоит свеч. Это потребует переделки еще и файла модуля, который не факт, что будет работать после очередного обновления системы. Проще сделать еще один хак шаблона. Вариант можно будет выбирать простой сменой шаблона. Настройку через админку целесообразно делать только в том случае, если это меню заменит существующее в оф. релизе.
0
14 лет назад #
display:none - ПС кушают, иначе понятия "клоакинг" не сущестовало б =)
0
neart neart 14 лет назад #
Спасибо за инфу.
0
Димитриус Димитриус 14 лет назад #
Да это вещь!!!)))То, что мне надо!))
0
neart neart 14 лет назад #
Если используете не дефолтный шаблон, отпишитесь, пожалуйста, как стало меню. В смысле, нужен ли был напильник или все заработало сразу. А еще лучше сцылочку, если можно.
0
Димитриус Димитриус 14 лет назад #
У меня дефолтоввый шаблон пока. Проект тока собраю. А вот там неограниченное количество вложений?

Еще от автора

Инвайты – забрасываем удочку пользователю
Пару дней назад в личку пришло уже второе письмо с вопросом об использовании инвайтов.
Новый модуль ` Универсальное меню `
Честно говоря, не думал возвращаться на сайт и просил Максисофта передать сообществу мой прощальный подарок (Универсальное меню).
Исправляем баг меню
Баг, конечно, не критичный но крайне неприятный для тех, кому нужно многоуровневое меню с разграничениями прав доступа к вложенным пунктам.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.