Резюме:
Предоставьте каждому пользователю свою собственную главную страницу («Главная категория») в вашем сообществе.
Это позволяет использовать единственное сообщество Discourse, в котором у пользователей есть свои «главные страницы» (читай: категории), определяемые их основной группой.
GitHub: Репозиторий https://github.com/merefield/discourse-category-home
Установка: Следуйте руководству по установке плагинов.
Вам нравится этот плагин? Пожалуйста, поставьте ему
на GitHub! ![]()
Возможности
Используя только стандартные элементы интерфейса Discourse, мы создали надежное и простое в обслуживании решение.
Настройка
Используя стандартный функционал Discourse:
- Определите, сколько категорий «домов»
вам нужно, и создайте их, если они еще не существуют:
- Если их еще нет, создайте отдельную группу для каждой из них:
- Добавьте пользователей в соответствующие группы.
- Установите эту группу как основную для каждого пользователя:
- Настройте права доступа каждой группы к соответствующей категории.
Готово! ![]()
Теперь, когда кто-то перейдет на главную страницу вашего сообщества, он будет перенаправлен в категорию, к которой у его основной группы есть права доступа.
Важно: Здесь действует простое правило, которому вы должны следовать: Если у пользователя зарегистрирована основная группа, и у неё есть права доступа только к одной категории, то он будет перенаправлен в эту категорию как на свою главную страницу.
Использование основной группы таким образом имеет ряд преимуществ, как вы могли заметить из ссылки выше, в частности:
- Вы можете присвоить пользователю звание (Title)
- Вы можете добавить ему значок (Flair)
- Вы можете стилизовать его сообщения
Другие соображения
Сделайте ваши главные страницы категорий более выразительными, стилизовав их уникальным образом, например, используя: Category Banners
Проверка уникальности прав доступа категории/основной группы
Чтобы убедиться, что ваша основная группа связана только с одной категорией, вы можете использовать эту удобную встроенную функцию Discourse, например:
В списке только одна категория, отлично! ![]()
Техническая часть
Используемая логика следующая:
return CategoryGroup.where(group_id: primary_group).first.category_id
Хотя теоретически можно «обойти» это ограничение, делать это неразумно, если вы используете эту основную группу для более чем одной категории, так как это нарушит работу механизма. Учитывайте это и следуйте моей рекомендации.
Повышение гибкости
Я открыт к предложениям о том, как еще можно настроить это поведение, но хотел бы ограничить количество специальных настроек и максимально использовать стандартное поведение и данные. Если у вас есть простое и элегантное решение, дайте мне знать.
Не удается установить плагины или настройка основной группы не работает?
Если вы не можете установить плагины (из-за ограничений вашего тарифного плана хостинга) или обнаружите, что конфигурация основной группы для вас не работает, рассмотрите альтернативу в виде компонента темы: Custom Homepage for Groups. Она требует более сложной настройки, но является менее инвазивной.
