Меню боковой панели групп в Discourse

:information_source: Сводка Создание пользовательских боковых меню для выбранных групп
:eyeglasses: Предпросмотр Присоединитесь к группе создателей тем, а затем предпросмотр здесь
:hammer_and_wrench: Репозиторий https://github.com/Lillinator/discourse-group-sidebar-menus
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Начинающее руководство по использованию тем Discourse

Установить этот компонент темы

:woman_technologist:t2: Обзор

Этот компонент темы Discourse позволяет администраторам форума создавать пользовательские боковые меню, доступные только членам выбранных групп.

Ключевые особенности:

  • Отображение меню на основе групп — разделы меню отображаются в боковой панели только для авторизованных пользователей
  • Конфигурация на основе объектов — удобный интерфейс настроек для создания меню
  • Несколько разделов — создание неограниченного количества разделов меню для разных групп (в разумных пределах)
  • Быстрая ссылка для редактирования администратором — иконка карандаша в заголовках меню ведёт администраторов напрямую к настройкам компонента

:briefcase: Некоторые варианты использования

  • Ресурсы и быстрые ссылки только для сотрудников
  • Ярлыки для модераторов категорий
  • Пользовательские порталы групп (проектные команды, учебные группы, книжные клубы, VIP-участники)
  • Ссылки на ресурсы родительского или партнёрского веб-сайта

:gear: Настройки

Разделы меню (menu_sections)

Открывает редактор настроек объектов для конфигурации пользовательских разделов групповых меню.

Свойства раздела

Свойство Описание
Заголовок меню Заголовок, отображаемый как заголовок раздела боковой панели
Разрешённые группы Группы, которым разрешено просматривать этот раздел меню (максимум: 20 групп на раздел)
Ссылки меню Коллекция ссылок для отображения в этом разделе (максимум: 20 ссылок на раздел)

Свойства ссылки

Свойство Описание
Иконка Имя иконки FontAwesome (например, circle-info, star, user-group). Возможно, потребуется добавить её в Admin > Все настройки сайта > подмножество SVG-икон
Текст Отображаемая метка для ссылки
URL Адрес назначения ссылки — поддерживает как относительные пути (/faq, /my/preferences), так и абсолютные URL (https://example.com)

:wrench: Установка и конфигурация

  1. Установите компонент темы согласно инструкции: Installing a theme or theme component.
  2. Перейдите в Редактор настроек объектов.
  3. Нажмите кнопку + new_menu_section, чтобы создать первый пользовательский раздел меню.
  4. Задайте новому меню заголовок в поле Menu title, затем выберите группы, которым должен быть предоставлен доступ к нему.
  5. Нажмите + new_menu_section, чтобы добавить ещё один раздел, или сохраните изменения.
Скриншоты конфигурации администратора с примером настройки

Свежая установка — перейдите в Редактор настроек объектов.

Пример сценария с 2 пользовательскими меню и 3 пользователями, один из которых администратор:

  • @Catra любит кошек и является членом группы pink, которая будет иметь доступ к меню Cat Menu :grinning_cat:
  • @HelloKitty любит собак и является членом группы purple, которая будет иметь доступ к меню Dog Menu :dog_face:
  • @Lilly является членом группы purple, потому что у неё есть собака, а собаки лучше. Однако она также администратор форума, и администраторы будут иметь доступ к меню Cat Menu, потому что кошки требуют большего присмотра :dog_face: :cat_with_wry_smile:

Создайте новое пользовательское меню — для нашего примера создайте Cat menu и добавьте группы, которым разрешён доступ к нему — pink и admins. Затем нажмите кнопку + menu_link, чтобы настроить ссылки для нового меню.

Добавьте ссылки меню — 1. Имя иконки Fontawesome, 2. Текст для отображения ссылки, 3. URL, относительный или абсолютный. Нажмите кнопку + menu_link, чтобы добавить ещё одну ссылку в это меню.

Создайте ещё один пользовательский раздел меню под названием Dog menu, предоставьте доступ только группе purple и настройте ссылки:

Скриншоты результата доступа к боковому меню

Пользователь @Catra видит меню Cat! :grinning_cat:

Пользователь @HelloKitty видит меню Dog! :dog_face:

Администратор @Lilly видит оба меню и может их редактировать! :smiling_cat_with_heart_eyes:

Пример конфигурации

Заголовок меню: "Cat Stuff"
Разрешённые группы: team-cat
Ссылки:
  - Иконка: link
    Текст: Видео и фото про кошек
    URL: /t/cat-videos-and-photos/123
  - Иконка: magnifying-glass
    Текст: Вики про кошек
    URL: https://en.wikipedia.org/wiki/Cat

:light_bulb: Важные замечания

Доступ администраторов

Администраторы должны добавить себя в группы, чтобы видеть меню, настроенные для этих групп. Сам статус администратора не предоставляет доступ ко всем пользовательским меню. Это сделано намеренно! Кроме того, администраторы, входящие в разрешённые группы меню, увидят иконку карандаша в заголовке раздела, ведущую к настройкам компонента.

Конфигурация групп

  • Группа everyone не поддерживается — используйте встроенный интерфейс нижнего колонтитула боковой панели для создания глобальных пользовательских меню для всех пользователей, включая анонимных посетителей.
  • Максимум 20 групп на раздел меню. Если вам нужно больше, создайте дублирующие разделы с разными назначениями групп.
  • Пользователи, входящие в несколько групп, увидят все разделы меню, к которым у них есть доступ.

Тестирование и организация

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

Вопросы безопасности

Этот компонент обеспечивает контроль доступа только на уровне интерфейса. Он управляет видимостью меню, но не доступом к ресурсам — компонент контролирует только то, что отображается в боковой панели, а не то, кто может получить доступ к самим ресурсам.

Всегда полагайтесь на встроенную систему разрешений Discourse для защиты реальных ресурсов:

  • Правильно настройте разрешения категорий
  • Установите ограничения видимости тем
  • Используйте контроль доступа на основе групп для контента
  • Убедитесь, что для доступа к приватным ресурсам требуется аутентификация

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


Это был совместный проект с @Moin — её вклад, вдохновение и отзывы были неоценимы.


Посмотрите другие мои материалы по Discourse
12 лайков

Похоже, у меня возникает ошибка 404 на репозитории.

EDIT: Всё в порядке!

2 лайка

ха-ха, попробуй ещё раз. забыл сделать это публичным! :laughing:

6 лайков

Превосходно! Я давно этого хотел. Я создал для себя отличную коллекцию полезных пользовательских боковых меню: ссылки для модерации, задач администраторов и справочной информации, документации Discourse, внешнего контента, к которому мы часто обращаемся на форуме, и так далее. В одном из меню есть ссылки на различные периодические встречи, использующие просто ссылку с тегом, например /tag/comm-mgt-monthly, что помогает мне быстро переходить к текущим и предыдущим повесткам дня и протоколам.

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

И иконки! Ура! Насколько я знаю, единственным способом сделать это было добавление пользовательского CSS. Это новое решение элегантно.

И устойчиво! Все администраторы смогут редактировать файлы конфигурации, так что зависимость только от меня исчезнет. Спасибо @Lilly и @Moin!

1 лайк

Привет @Lilly и @Moin,

Спасибо за создание этого компонента.

Я использовал Group sidebar menu sections - deprecated на своём самодостаточном сайте, и при последнем обновлении получил предупреждение, что старый тематический компонент устарел, и нужно установить этот.

Я установил компонент и создал своё собственное меню групп, но не понимаю, как переместить меню групп. (Наверное, я просто не вижу очевидного :see_no_evil_monkey:) На ваших скриншотах Cat Menu и Dog Menu находятся в боковом меню навигации выше раздела Topics, но моё собственное меню групп отображается в самом низу боковой навигации. Как переместить его выше раздела Topics?

1 лайк

Это не очевидно. Lilly использовала Discourse Sidebar Menu Reorder, чтобы разместить cat-menu вверху.

3 лайка

Огромное спасибо! Настройка прошла очень легко.

3 лайка