Header Submenus

:discourse2: Summary Header Submenus will allow you to build a header menu - with submenus - using plain text!
:eyeglasses: Preview Preview on Discourse Theme Creator
:hammer_and_wrench: Repository Link https://github.com/discourse/discourse-header-submenus
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

Features

Desktop

Mobile

Settings

Name Description
Menu items Add menu items. One item per line in this order: Text, icon, title, view.
Submenu items Add submenu items. One item per line in this order: Parent, text, icon, URL, target, title.
Svg icons Include FontAwesome icon classes for each icon used in the lists above.
Fixed mode Force the menu to be visible at the top of the screen regardless of scroll position - Desktop only
Show caret Show caret icons next to menu items
Invert position Display menu items on the opposite side of the screen
Menu background Background color for the menu. (hex, rgb, rgba or CSS color name)
Menu item color Color for menu items. (hex, rgb, rgba or CSS color name)
Menu-item-active-background Background color for menu items when active. (hex, rgb, rgba or CSS color name)
Menu-item-active-color Color for menu items when active. (hex, rgb, rgba or CSS color name)
Submenu background Background color for submenus. (hex, rgb, rgba or CSS color name)
Submenu item color Color for submenu items. (hex, rgb, rgba or CSS color name)
Submenu item hover background Background color for submenus items when hovered. (hex, rgb, rgba or CSS color name)
Submenu item hover color Color for submenus items when hovered. (hex, rgb, rgba or CSS color name)
Divider color Color for divider lines in submenus. (hex, rgb, rgba or CSS color name)

There are four groups of settings

  1. Menu items

    Enter the items you want to appear on the menu. One comma-delimited item per line in this order

    Text, icon, title, view

    Text: what appears on the menu.
    Icon: the icon displayed next to the item. If you do not want to use an icon, use none.
    Title: the text that appears when the item is hovered.
    View: Choose what devices the item appears on.

    ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ vdm appears on both desktop and mobile
    ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ vdo appears on desktops only,
    ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ ‏‏‎ vmo appears on mobiles only.

    Due to lack of space, it is not recommended to add more than 3-4 items on mobile.

  2. Submenu items

    Enter a list of the submenu items you want to add to your menu. One comma-delimited item per line in this order

    Parent, text, icon, URL, target, title

    Parent: the name of the parent menu item which this submenu item should show under. Use the text value from the list above.
    Text: the text that shows for this submenu item.
    Icon: the icon for this submenu item, use none if no icon is needed.
    URL: the path this menu item links to. You can use relative paths as well.
    Target: Choose whether this item will open in a new tab or in the same tab. Use blank to open the link in a new tab, or use self to open it in the same tab.
    Title: the text that shows when the item is hovered.
    Dividers: You can also add dividers between submenu items. To add a divider use parent, divider.

Here’s a quick example to cover points 1 and 2 above:

Let’s say I want to add a menu item called Design and add a few items to its submenu like so

I would first enter this as a menu_item

Design, magic, Get inspired!, vdm

And then enter these as sub_menu items

Design, Galleries, th, #, blank, Cool galleries for you to look at.
Design, Design process, lightbulb-o, #, blank, Learn the basics.
Design, Blog design, columns, #, blank, What makes for a great blog?
Design, divider
Design, Freebies, gift, #, blank, Everyone likes freebies!
Design, Photoshop tutorials, book, #, blank, Photoshop for beginners.
Design, Design trends, bar-chart, #, blank, Stay on top of the current trends!

That’s it!

The theme comes with a placeholder menu by default, so have a look at that and ask if you have questions.

  1. Layout options.

    these are pretty self-explanatory

  2. Color options

    These are empty by default, but if you add a color here, it will override the component’s defaults which are based on the current color scheme.


:discourse2: Hosted by us? Theme components are available to use on our Standard, Business, and Enterprise plans.

Last edited by @JammyDodger 2024-06-12T21:46:41Z

Check documentPerform check on document:
90 лайков

Я только что обновил этот компонент.

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

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

Помимо этого, обновление добавляет только одну новую функцию: теперь подменю будут отображаться при наведении курсора на десктопе, а не только по клику.

14 лайков

Отличное обновление, Джо! На мобильном я столкнулся только с двумя проблемами:

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

Это должно работать, но только в мобильном представлении. Поэтому, если вы просто тестируете это в браузере в режиме эмуляции мобильного устройства без изменения user agent, оно не сработает. Пожалуйста, подтвердите, что вы тестируете это на реальном телефоне. Если да, сообщите, какое устройство и браузер вы используете.

Я тоже это наблюдаю. Причина в том, что вся логика открытия и закрытия выпадающих меню теперь обрабатывается через CSS вместо JavaScript. Я не думаю, что в CSS есть способ автоматически закрывать выпадающее меню после клика. Поэтому для этой конкретной проблемы нам придется вернуться к использованию JavaScript. Я займусь этим после того, как вы подтвердите проблему с прокруткой на мобильном устройстве.

2 лайка

Это на iPhone 8 с приложением Discourse, то же самое в Safari. Спасибо, Джо!

2 лайка

Какие-то новости по этому поводу, Джо? Спасибо!

На сайте сообщества Sponge это реализовано красиво: интеграция находится в основном заголовке, а не отдельным слоем сверху:

Как этого добиться? Нам бы очень хотелось такое же решение для нашего сайта.

4 лайка

Возможны ли подменю для ссылок в шапке? Этот компонент темы добавляет новое меню над шапкой, но некоторые пользователи не хотят создавать новое навигационное меню. Им просто нужно, чтобы при наведении на текущие ссылки в шапке появлялись подменю.

5 лайков

Это приятно. Интересно, как они это сделали.

1 лайк

У кого-то есть такая проблема? Иконки социальных сетей не работают (раньше работали), и даже при использовании другого шрифта FA они не отображаются.

1 лайк

Вы пробовали префикс fab, так как это бренды, им нужен этот префикс.

1 лайк

Спасибо за ваш ответ, @davidkingham. Я добавил префикс fab, но логотип не отображается.

1 лайк

Не забудьте отредактировать иконки в списке ссылок, в них также необходимо добавить префикс fab-

4 лайка

Бинго! Именно так :slight_smile: Большое спасибо!

2 лайка

Привет! Не уверен, в чём причина, но настройка «Menu-item-active-background» работает некорректно. Мне казалось, что она должна просто менять цвет фона меню при наведении, но выбранный цвет полностью перекрывает текст. Посмотрите здесь…

Также настройка под ней «Menu-item-active-color» кажется нерабочей. Я пробовал разные цветовые коды, но при тестировании ничего не меняется.

Есть какие-то идеи?

2 лайка

Я бы хотел разместить подменю под заголовком сайта, а не сверху. Не могли бы вы подсказать, как это сделать? Пример кода был бы очень полезен :pray:

1 лайк

@Johani @davidkingham Вы нашли решение этой проблемы: «При нажатии на элемент в выпадающем списке он остаётся открытым»?

Спасибо.

1 лайк

Нет, это всё ещё происходит. Один из возможных вариантов — показывать на мобильных устройствах только иконки без текста. Что вы думаете?

1 лайк

Как отображение только иконок на мобильных устройствах решает проблему? «При нажатии на элемент в раскрывающемся списке он остается открытым»

1 лайк

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

1 лайк