Домашняя страница категории Discourse 🏠

Резюме:

Предоставьте каждому пользователю свою собственную главную страницу («Главная категория») в вашем сообществе.

Это позволяет использовать единственное сообщество Discourse, в котором у пользователей есть свои «главные страницы» (читай: категории), определяемые их основной группой.

:link: GitHub: Репозиторий https://github.com/merefield/discourse-category-home
:arrow_right: Установка: Следуйте руководству по установке плагинов.

Вам нравится этот плагин? Пожалуйста, поставьте ему :star: на GitHub! :pray:

Возможности

Используя только стандартные элементы интерфейса Discourse, мы создали надежное и простое в обслуживании решение.

Настройка

Используя стандартный функционал Discourse:

  • Определите, сколько категорий «домов» :houses: вам нужно, и создайте их, если они еще не существуют:
  • Если их еще нет, создайте отдельную группу для каждой из них:
  • Добавьте пользователей в соответствующие группы.
  • Установите эту группу как основную для каждого пользователя:
  • Настройте права доступа каждой группы к соответствующей категории.

Готово! :tada:

Теперь, когда кто-то перейдет на главную страницу вашего сообщества, он будет перенаправлен в категорию, к которой у его основной группы есть права доступа.

Важно: Здесь действует простое правило, которому вы должны следовать: Если у пользователя зарегистрирована основная группа, и у неё есть права доступа только к одной категории, то он будет перенаправлен в эту категорию как на свою главную страницу.

Использование основной группы таким образом имеет ряд преимуществ, как вы могли заметить из ссылки выше, в частности:

  • Вы можете присвоить пользователю звание (Title)
  • Вы можете добавить ему значок (Flair)
  • Вы можете стилизовать его сообщения

Другие соображения

Сделайте ваши главные страницы категорий более выразительными, стилизовав их уникальным образом, например, используя: Category Banners

Проверка уникальности прав доступа категории/основной группы

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

В списке только одна категория, отлично! :+1:

Техническая часть

Используемая логика следующая:

   return CategoryGroup.where(group_id: primary_group).first.category_id

Хотя теоретически можно «обойти» это ограничение, делать это неразумно, если вы используете эту основную группу для более чем одной категории, так как это нарушит работу механизма. Учитывайте это и следуйте моей рекомендации.

Повышение гибкости

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

Не удается установить плагины или настройка основной группы не работает?

Если вы не можете установить плагины (из-за ограничений вашего тарифного плана хостинга) или обнаружите, что конфигурация основной группы для вас не работает, рассмотрите альтернативу в виде компонента темы: Custom Homepage for Groups. Она требует более сложной настройки, но является менее инвазивной.

24 лайка

При попытке пересобрать после добавления этого в файл app.yml я получаю сообщение об ошибке

Pups::ExecError: cd /var/www/discourse/plugins && git clone GitHub - merefield/discourse-category-home: Alters the user's homepage to become the Category of their Primary Group · GitHub завершилась ошибкой с кодом возврата #<Process::Status: pid 391 exit 128>
Место ошибки: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn’

У других всё ещё работает?

Похоже, сборка проходит успешно. Проверьте синтаксис клонирования в файле app.yml.

Я всё же исправил отсутствующую строку локали :slight_smile: (но это не могло стать причиной вашей проблемы).

1 лайк

Да, теперь всё отлично работает, спасибо за отличный плагин. Discourse Doctor всё исправил, должно быть, в прошлый раз при пересборке приложения возникла проблема.

1 лайк