Добавить группы на страницу /about

:information_source: Краткое описание Добавьте больше групп на страницу «О нас» вашего Discourse
:eyeglasses: Предпросмотр Theme Creator
:hammer_and_wrench: Репозиторий https://github.com/discourse/discourse-add-groups-to-about-component/
:question: Инструкция по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

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

Этот компонент позволяет легко добавить больше групп на новую страницу «О нас». Подробнее о этом редизайне: New and improved About page at /about is live

Компонент включает следующие настройки:

  • Группы для страницы «О нас»: Группы, отображаемые на странице «О нас». Группы с нулём участников автоматически скрываются.
  • Показывать начальных участников: Количество участников, отображаемых при первоначальной загрузке для каждой группы; остальные скрываются за кнопкой «Показать ещё».
  • Заглавные буквы в названиях: Делает названия групп на странице «О нас» с заглавной буквы.
  • Порядок дополнительных групп: По алфавиту (по умолчанию), по порядку создания или по порядку, заданному в настройке «Группы для страницы «О нас»». Не влияет на порядок существующих групп администраторов и модераторов.
  • Показывать описание группы: Отображает описание группы под её заголовком (взято из настроек группы).
19 лайков

Это brilliantly, огромное спасибо! :clap:

Возможно ли добавить новую настройку для использования полного имени группы? Было бы здорово отображать в ней символы Unicode, но я не хочу включать настройку сайта unicode_usernames.

5 лайков

Это здорово, спасибо @awesomerobot :smiley:

Я тоже поддерживаю это предложение.

У меня есть группа с именем group-challenges-cmt, полное название которой — Challenges Committee, но на странице /about она отображается как group-challenges-cmt, что выглядит не очень красиво :blush:

Для справки: если отметить опцию Заглавные буквы в названиях групп на странице «О нас», то group-challenges-cmt превратится в Group-Challenges-Cmt — правильно ли я понимаю? Или этот флажок должен заглавлять только первую букву названия группы?

Странно, но если добавить группу trust_level_4 на страницу «О нас», то на фронтенде она отображается как Trust Level 4 :thinking:

Тем не менее, это отлично, большое спасибо, Kirs @awesomerobot, теперь я могу убрать JS-код, который оставался с тех давних пор :smiley:

6 лайков

Добавляю несколько визуальных материалов для справки.

Вот как названия групп выглядят на странице администратора:

А вот так они выглядят в интерфейсе:

Не знаю, насколько глубоко вы хотите погрузиться в эту тему, @awesomerobot. Вы принимаете предложения по новым функциям? :smiley:

Было бы здорово добавить возможность сортировки групп. Я пробовал добавлять их в разном порядке, на случай если сортировка идёт по ID базы данных, но ничего не изменилось, так что, полагаю, они сортируются по алфавиту.

Возможно ли также исправить выравнивание участников групп?

Вы увидите, что администраторы в верхней части страницы занимают три колонки, тогда как дополнительные группы отображаются только в двух колонках? :thinking:

И ещё раз:

:bowing_man:

4 лайка

Выглядит отлично! Спасибо, Крис. Мне кажется, это прекрасный способ показать людям, как устроен сайт. Многие группы на странице «Группы» ничего не значат, и эта страница выглядит загромождённой, в отличие от страницы «О нас», которая может стать более тщательно отобранным местом назначения.

Мне интересно, не стоит ли нам в будущем перенести эту функцию в ядро. Собираем обратную связь:

У функции есть ограничения как компонента темы:

  • интерфейс конфигурации находится не в /admin/config/about, а в компоненте темы
  • не учитывает настройку «скрытые группы на странице о нас», чтобы исключать группы, которые не должны отображаться на странице «О нас» (ссылка)
  • стилизация (например, количество колонок) включённых групп отличается от списков администраторов и модераторов, и её нужно будет обновлять каждый раз при изменении стилизации страницы «О нас»

Некоторая обратная связь уже была получена:

  • отображать название группы, а не слаг
  • автоматическое капитализация в некоторых случаях выглядит некорректно
  • добавить возможность сортировки групп

Также мне кажется полезным предоставить здесь краткую сводку дополнительных метаданных о группах, возможно, скрытую за кнопкой информации рядом с названием группы:

  • описание
  • владелец группы
  • разрешения группы
  • количество участников в группе
  • ссылка на страницу группы
3 лайка

Или же сделать заголовок группы кликабельной ссылкой на саму группу.

1 лайк

Некоторые обновления!

Эта просьба была выполнена быстрее, чем я ожидал :slight_smile:, но мне следовало это предвидеть.

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

Компонент темы работает следующим образом: он сопоставляет соответствующий ID группы из настройки темы со службой сайта (this.site.groups). Эта структура содержит ID и имя, но не полное имя…

Затем имя подставляется в эндпоинт /g/${name}/members… который содержит участников группы, но также не включает полное имя…

Таким образом, чтобы получить полное имя, мне нужно сделать еще один запрос к /g/${name}.

Флажок включает простую CSS-стилизацию text-transform: capitalize, которая делает заглавной первую букву каждого слова.

Хотя я совершенно забыл про ::first-letter, который можно использовать вместо этого, поэтому я перешел на него… теперь это должно быть более согласовано с нашим стандартным регистром.

Если кто-то задается вопросом, причина включения этой части о регистре заключается в том, что автоматические группы, такие как группы уровней доверия, не имеют поля full_name и всегда записаны в нижнем регистре. Какой запутанный клубок мы завели :sweat_smile:

Я убрал подчеркивания в компоненте, но не дефисы… это обновление устранит и то, и другое (но только для name, а не для full_name).

Я добавил настройку со следующими вариантами:

  • по алфавиту
  • по порядку создания
  • по порядку в настройках темы

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

Ах да, в Discourse есть CSS, который применяется только к группам модераторов и администраторов, я добавил исправление.

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

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

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

5 лайков

Очень здорово! Впечатляет, чего можно достичь в компоненте темы.

Не понимаю, зачем люди включают эти группы… Возможно, мы можем просто игнорировать регистр и разрешить их запись в нижнем регистре.

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

3 лайка

Это безумие :rofl:

Как мы перешли от простого вопроса несколько дней назад к полноценной теме, которая абсолютно идеальна во всех отношениях?!??

Удивительно, просто невероятно :chefs_kiss:

Спасибо, Крис @awesomerobot :clap:t2: :bowing_man:t2:

5 лайков

Думаю, самый частый случай — это отображение уровня доверия 4, так как они получают определённые права модерации.

3 лайка

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

Я также заметил странность с группами уровней доверия на странице «О нас» — не каждый раз, когда я её просматривал, но членство в группах отображалось некорректно. Иногда я, как администратор, появлялся в tl0, хотя формально являюсь участником tl2. Также странно, что я вообще там фигурирую, поскольку я администратор, и уровень доверия для меня неактуален. Но это особенность работы уровней доверия в Discourse и того, как они функционируют.

3 лайка

Я настроил это для TL3. Я создал новую группу и с помощью автоматизации Discourse синхронизировал значок «Regular» с новой группой TL3.


Да, я тоже это заметил. Сначала я скрывал администраторов через CSS, но это немного ломало макет, поэтому я вместо этого убрал значок «Regular», так как автоматизация синхронизирует его для меня. Не уверен, добавят ли его снова автоматически позже. Надеюсь, что нет. Да, он снова добавил автоматически, так что CSS теперь работает.


Я также заметил, что в JSON участники группы отсортированы по убыванию. Было бы неплохо либо перемешать их случайным образом, либо отсортировать по активности, например, используя ?order=last_posted_at или ?order=last_seen_at.

3 лайка

Это именно та причина, по которой мы делаем это в нашем сообществе :blush:

Согласен.

Я добавил немного CSS-кода, чтобы скрыть участников нашей команды администраторов из списка участников с уровнем доверия 4, отображаемого на нашей странице /about.

Это позволяет сосредоточить внимание исключительно на участниках с уровнем доверия 4, так как их следует поблагодарить и поздравить за их вклад в наше сообщество:

Также я заметил, что при включении в настройках trust level 4 отображалось как Trust level 4.

Мой ОКС (обсессивно-компульсивное расстройство) был не в восторге от этого, потому что у всех остальных групп первая буква каждого слова была заглавной :blush: Я добавил ещё одну строку CSS, чтобы изменить Trust level 4 на Trust Level 4.

Теперь всё идеально, насколько это вообще возможно.

Ещё раз спасибо @awesomerobot — мы в восторге :chefs_kiss:

4 лайка

Из любопытства, как здесь упорядочены все участники?

По user_id в базе данных?

3 лайка

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

3 лайка

Я подозреваю, что изменение порядка администраторов здесь выходит за рамки задачи :slight_smile:

Спасибо, Крис. Похоже, это обновление изменило порядок группы пользователей с уровнем доверия 4, но не группы ниже неё? :thinking:

3 лайка

На исходной странице «О нас» группы, такие как администраторы и модераторы, отсортированы по дате последнего посещения.

Я предлагал это здесь.

Думаю, было бы хорошо использовать что-то подобное, чтобы сохранить согласованность порядка исходных и пользовательских групп. :thinking:

2 лайка

Но они не будут согласованы, если их порядок постоянно меняется? :thinking:

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

2 лайка

В данный момент запущена версия Discourse 3.5.0.beta1-dev (e26a1175d7), и установлена последняя доступная версия этой темы оформления.

Можно ли провести проверку работоспособности и поиск ошибок?

Вот мои настройки:

Как видно, на страницу «О нас» добавлены две группы:

  • trust_level_4
  • group-challenges-cmt

Видимость этих групп ведёт себя неожиданным образом.


Администраторы видят обе группы на странице «О нас»:


Неадминистраторы видят на странице «О нас» только группу trust_level_4:


Неавторизованные пользователи не видят ни одной группы на странице «О нас».


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

1 лайк