| Краткое описание | Создание пользовательских меню боковой панели для выбранных групп | |
| Предпросмотр | Присоединитесь к группе создателей тем, а затем просмотрите здесь | |
| Репозиторий | https://github.com/Lillinator/discourse-group-sidebar-menus | |
| Руководство по установке | Как установить тему или компонент темы |
Установить этот компонент темы
Обзор
Этот компонент темы Discourse позволяет администраторам форума создавать пользовательские меню боковой панели, доступные только членам выбранных групп.
Ключевые особенности:
- Визуализация меню на основе групп — разделы меню отображаются в боковой панели только для авторизованных пользователей
- Настройка на основе объектов — удобный интерфейс настроек для создания меню
- Несколько разделов — создавайте неограниченное количество разделов меню для разных групп (в разумных пределах)
- Ссылка быстрого редактирования для администраторов — значок карандаша в заголовках меню напрямую ведет администраторов к настройкам компонента
Примеры использования
- Ресурсы и быстрые ссылки только для персонала
- Быстрые ссылки для модераторов категорий
- Пользовательские порталы для групп (рабочие группы, учебные группы, книжные клубы, VIP-участники)
- Ссылки на ресурсы родительского или партнерского веб-сайта
Настройки
Разделы меню (menu_sections)
Открывает редактор настроек объектов для конфигурации пользовательских разделов меню групп.
Свойства раздела
| Свойство | Описание |
|---|---|
| Название меню | Заголовок, отображаемый в качестве заголовка раздела боковой панели |
| Разрешенные группы | Группам, которым разрешено просматривать этот раздел меню (максимум: 20 групп на раздел) |
| Ссылки меню | Коллекция ссылок для отображения в этом разделе (максимум: 20 ссылок на раздел) |
Свойства ссылки
| Свойство | Описание |
|---|---|
| Иконка | Имя иконки FontAwesome (например, circle-info, star, user-group). Возможно, потребуется добавить в Админ > Все настройки сайта > svg icon subset |
| Текст | Отображаемая метка для ссылки |
| URL | Целевой адрес ссылки — поддерживает как относительные пути (/faq, /my/preferences), так и абсолютные URL (https://example.com) |
Установка и настройка
- Установите компонент темы согласно Installing a theme or theme component.
- Перейдите в
Редактор настроек объектов - Нажмите кнопку
+ new_menu_section, чтобы настроить первый пользовательский раздел меню - Введите название нового меню в поле
Название меню, а затем выберите группы, которым должен быть предоставлен к нему доступ. - Нажмите
+ new_menu_section, чтобы добавить другой раздел, или сохраните изменения.
Скриншоты конфигурации администратора с примером настройки
Новая установка — перейдите в Редактор настроек объектов.
Пример сценария с 2 пользовательскими меню и 3 пользователями, один из которых является администратором:
@Catraлюбит кошек и является членом группыpink, которая будет иметь доступ кМеню кошек@HelloKittyлюбит собак и является членом группыpurple, которая будет иметь доступ кМеню собак@Lillyявляется членом группыpurple, потому что у нее есть собака, и собаки лучше. Однако она также является администратором форума, и администраторы будут иметь доступ кМеню кошек, потому что за кошками нужен более тщательный присмотр![]()
Создайте новое пользовательское меню — для нашего примера создайте Меню кошек и добавьте группы, которым разрешен к нему доступ — pink и admins. Затем нажмите кнопку + menu_link, чтобы настроить ссылки для нового меню.
Добавьте несколько ссылок меню — 1. Имя иконки Fontawesome, 2. текст для отображения ссылки и 3. URL, относительный или абсолютный. Нажмите кнопку + menu_link, чтобы добавить другую ссылку в это меню.
Создайте другой пользовательский раздел меню под названием Меню собак, предоставьте доступ только группе purple и настройте ссылки:
Скриншоты доступа к результирующему меню боковой панели
У пользователя @Catra есть меню кошек! ![]()
У пользователя @HelloKitty есть меню собак! ![]()
У пользователя-администратора @Lilly есть оба меню, и она может их редактировать! ![]()
Пример конфигурации
Название меню: "Всё о кошках"
Разрешенные группы: team-cat
Ссылки:
- Иконка: link
Текст: Видеоролики и фото кошек
URL: /t/cat-videos-and-photos/123
- Иконка: magnifying-glass
Текст: Википедия о кошках
URL: https://en.wikipedia.org/wiki/Cat
Важные замечания
Доступ администратора
Администраторы должны добавлять себя в группы, чтобы видеть меню, настроенные для этих групп. Статус администратора сам по себе не предоставляет доступ ко всем пользовательским меню. Это сделано намеренно! Кроме того, администраторы, принадлежащие к разрешенным группам меню, будут видеть значок карандаша в заголовке раздела, который ведет к настройкам компонента.
Настройка групп
- Группа
everyoneне поддерживается — используйте встроенный интерфейс нижнего колонтитула боковой панели для создания глобальных пользовательских меню для всех пользователей, включая анонимных посетителей. - Максимум 20 групп на раздел меню. Если вам нужно больше, создайте дублирующие разделы с разными назначениями групп.
- Пользователи, входящие в несколько групп, будут видеть все разделы меню, к которым у них есть доступ.
Тестирование и организация
Используйте тестовые аккаунты для проверки правильного доступа для различных комбинаций групп. Ведите учет ваших конфигураций меню, чтобы избежать путаницы по мере роста сложности; для крупных форумов с множеством групп рекомендуется использовать матрицу доступа или аналогичную документацию.
Соображения безопасности
Этот компонент обеспечивает контроль доступа только на уровне интерфейса. Он управляет видимостью меню, а не доступом к ресурсам — этот компонент управляет только тем, что отображается в боковой панели, а не тем, кто может получить доступ к фактическим ресурсам.
Всегда полагайтесь на встроенную систему разрешений Discourse для защиты фактических ресурсов:
- Правильно настройте разрешения категорий
- Установите ограничения видимости тем
- Используйте групповой контроль доступа для контента
- Убедитесь, что частные ресурсы требуют аутентификации
Рекомендуемая практика для администраторов:
Настройте разрешения безопасности связанных категорий и членство в группах отдельно — например: ссылка меню на частную категорию должна иметь правильно настроенные разрешения этой категории. Администраторы несут ответственность за обеспечение того, чтобы ссылки на внешние ресурсы были должным образом авторизованы для выбранных групп.
Это был совместный проект с @Moin — ее вклад, вдохновение и отзывы были неоценимы.
Посмотрите мои другие разработки для Discourse








