⬇️ Выпадающий заголовок

Да, именно это у меня и было. Спасибо, что обратили на это внимание.

В подмножестве SVG-икон вы указываете имя иконки FontAwesome, которую ищете, а затем в меню, где вы добавляете кнопки в заголовок, используете тот же синтаксис. Для иконки пользователя вам достаточно, например, написать “user”.

Мне удалось настроить открытие ссылок в новой вкладке с помощью этого скрипта. Просто добавьте следующий код в секцию «Head».

<script>
document.addEventListener("DOMContentLoaded", function() {
    const links = document.querySelectorAll(".custom-header-link.with-url");
    links.forEach(link => {
        link.addEventListener("click", function(e) {
            e.preventDefault();
            e.stopPropagation();
            const titles = {
                "Documentation": "Введите URL здесь",
                "Downloads": "Введите URL здесь",
                "Source Code": "Введите URL здесь",
                "Dev Portal": "Введите URL здесь",
                "Slack Channel": "Введите URL здесь"
            };
            const url = titles[this.getAttribute("title")];
            if (url) {
                window.open(url, '_blank');
            }
        });
        link.setAttribute("href", "#");
    });
});
</script>

Надеюсь, это поможет!

Возможно ли иметь другой вид, когда заголовок сайта свернут и отображается заголовок текущей темы (при прокрутке темы вниз)?

Я заметил, что выпадающий заголовок по-прежнему отлично выглядит и имеет смысл на широких экранах, но не на маленьких. Поэтому использование display: none было бы полезно, и это уже реализовано на десктопе при max-width: 712px.

Спасибо и приветствия. :slight_smile:

2 лайка

Есть ли способ показывать только заголовок выпадающего списка на мобильных устройствах?

Я пробовал следующее:

/* Стили по умолчанию — скрыть кнопки заголовка */
.header-buttons {
  display: none;
  visibility: hidden;
}

/* Медиа-запрос для мобильных устройств */
@media screen and (max-width: 767px) {
  .header-buttons {
    display: inline; /* или display: inline-block; в зависимости от вашей верстки */
    visibility: visible;
  }
}

Это работает, но всё остальное в заголовке (например, GitHub - discourse/discourse-header-search · GitHub) всё ещё сжимается, как будто выпадающий заголовок всё ещё присутствует…

Что я упускаю?

Спасибо.

1 лайк

Скорее всего, ваша настройка была перезаписана.
Вам не нужен visibility — вы можете сделать так:

.header-buttons {
  display: none !important;
}
2 лайка

Вопрос об использовании функций безопасности:

Если вы используете эту функцию, возможно ли иметь более одной группы безопасности с доступом к меню?

Наш пример: мы проводим несколько образовательных программ (с несколькими годовыми/классными группами для каждой программы). У каждой классной группы есть своя группа безопасности, чтобы мы могли предоставить им доступ к нужным образовательным ресурсам (без возможности доступа к ресурсам, предназначенным для другой программы/учебного года). При этом каждая годовая группа имеет уникальную категорию для своего класса.

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

На данный момент я вижу только два решения:

  • Создать группу безопасности, объединяющую сотрудников и каждую классную группу (это неудобно, так как я хотел бы упростить работу с группами безопасности, а не усложнять её).
  • Дублировать меню: одно для студенческой группы, другое для группы сотрудников.

Ни одно из этих решений не кажется идеальным.

Следующий вопрос: а что насчет добавления функций безопасности к элементам подменю?
(В моём примере это означало бы, что я мог бы использовать одно меню для всех различных групп курсов/классов, а затем показывать студентам только соответствующие элементы подменю. В то время как на данный момент мне приходится управлять примерно 5–6 основными меню).

1 лайк

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

Могу ли я предложить вместо этого просто добавить категории классов в настройку сайта default_navigation_menu_categories?

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

Если я правильно понял вашу проблему, это будет работать для вас довольно хорошо.

2 лайка

Привет, Нейтан,

Мы настроили наши категории. Но нам также нужно меню в верхней части страницы. Пользователи привыкли к верхним меню — а сообщества и так представляют собой сложную кривую обучения (мы не здесь, чтобы создавать для наших студентов целую новую технологическую вселенную).

Кроме того, это не работает, потому что нам нужно иметь возможность добавлять в меню ссылки на внешние сайты (особенно на наши сайты SharePoint, которые используются, так как в Discourse нет структурированной библиотеки), а категории этого не позволяют.

Честно говоря, было бы проще, если бы можно было разрешить нескольким группам безопасности просматривать меню (так же, как мы разрешаем нескольким группам безопасности доступ к категории). Но если это невозможно, нам придется придумать что-то другое.

1 лайк

@merefield Высота кнопок входа зависит от заголовка выпадающего меню

Это проблема возникает только при использовании links position со значением right.

2 лайка

Я больше не поддерживаю этот проект, поэтому пометил его как unmaintained.

Однако вы можете отправить pull-запрос, и я его рассмотрю. Если у вас лично нет времени или навыков, но вы хотите, чтобы кто-то исправил проблему и у вас есть бюджет, разместите сообщение в Marketplace.

4 лайка

Это тоже вызывает у меня проблему. Я посмотрел, но, к сожалению, это слишком сложно для моих простых CSS-хаков.

3 лайка

Я создал PR для модернизации компонента. (спонсор: @davidkingham) :+1:
По пути я также исправил несколько проблем с UX, которые заметил.

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

  • Заменить тип настройки json_schema на тип objects
  • Добавить опцию для открытия ссылки в новой вкладке
  • Улучшить доступность
10 лайков

Спасибо @Arkshine — отличная работа!

4 лайка

Я вижу эту фатальную ошибку на сайте, использующем этот компонент темы :eyes:

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'trim')
    at get source (custom-icon.gjs:20:24)
    ...
3 лайка

О. Я создал PR для исправления этой проблемы; спасибо за сообщение!


Объединено! :+1:

7 лайков

Отличный компонент и прекрасная работа — спасибо за ваши усилия и профессионализм! Я заметил, что выпадающее меню в настоящее время поддерживает один уровень вложенности: основной заголовок и подпункты (например, Заголовок → Ссылки). Можно ли добавить ещё один уровень, чтобы структура выглядела так: Заголовок → Подпункт → Ссылки?

2 лайка

@angus Я открыл PR для обновления устаревшего имени иконки Font Awesome, которое я обнаружил:

2 лайка

Спасибо @kelv :folded_hands:

3 лайка

Это должно работать в Horizon, или нужно что-то изменить?

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