Пользовательская домашняя страница для групп

Обзор

После установки и добавления в активную тему этот компонент темы позволяет управлять «главной страницей», делая её отличной от набора страниц, доступных по умолчанию в Discourse, а также назначая разные «главные страницы» для разных групп (например, участники группы интересуются только или в основном конкретной категорией). Это может быть применено ко всем пользователям, анонимным пользователям (не авторизованным), мобильным пользователям или в зависимости от основной группы пользователя. Изначально разработан пользователем @pfaffman. Подробнее: User-specific Discourse home page.

Сценарии использования:

  1. Вы хотите что-то отличное от «обычной» главной страницы.
  2. Вы хотите отдельную главную страницу для анонимных пользователей.
  3. Вы хотите отдельную главную страницу для мобильных пользователей.
  4. У вас есть группа пользователей, интересующихся лишь небольшой частью вашего экземпляра. Они хотят видеть только свою конкретную категорию.
  5. Временно перенаправить группу ваших пользователей на специальное мероприятие или подобное.
  6. Настроить разные целевые страницы для разных групп.

Настройки

Пользовательская главная страница по умолчанию

Позволяет задать глобальную пользовательскую главную страницу.

Страница для анонимных пользователей

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

Главная страница для мобильных устройств

Как описано в Force Mobile Homepage, это позволяет задать отдельную главную страницу для мобильных пользователей. Эта настройка переопределяет выбранные выше параметры.

Карта страниц для групп

Поддерживает несколько записей. Каждая запись должна иметь формат group_name:path, где group_name — это слаг группы (не полное имя группы Full Name), а path — желаемая главная страница (например, “/c/great-category/4”).

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

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

Известная проблема — ограничение относительными URL

К сожалению, это не включает Page Publishing. Однако можно обойти это ограничение, создав постоянную ссылку (permalink), которая будет перенаправлять на внешний сайт, и указывать именно эту постоянную ссылку.

  • @pfaffman протестировал это с постоянной ссылкой /go-google, которая перенаправляет на https://google.com, и настройкой вида group-name:/go-google.
  • Постоянные ссылки создаются в настройках администратора по адресу /admin/customize/permalinks.
42 лайка
Best way to make the /news directory the home page?
Microcommunities / clubs
Multiple communities on discourse?
Filter a single discourse instance by the domain it is accessed by
FKB Pro - Social theme
Default homepage that the user selects
How to set the home page to be an AI bot? ex: ask.discourse.com
Page for not-logged in users with a single topic displayed
How to redirect when login
How can I make the home page similar to this one?
Show Categories on main page for new visitors and Recent for logged in members
2024: The Year in Review
Streamlining forum organization with third level sub-categories
Can Discourse Support a Shared Forum for Two Websites with Distinct Styling?
How to set the home page to be an AI bot? ex: ask.discourse.com
How to set the home page to be an AI bot? ex: ask.discourse.com
How to replace/override homepage template
Change default landing page for Groups (Members → Activity/Messages?)
Can Discourse Support a Shared Forum for Two Websites with Distinct Styling?
Help on redirect user on gated content
Discourse Category Home :house:
Allow invites to direct to a Category
Latest activity list as for replies
Redirect the home page of the forum
Clicking on a category doesn't filter the right topics
Make a category page default (main) page
Change homepage to tag?
Redirect user to specific page after login
Creating sub-communities in a discourse server
Make Chat Tab the default view on Mobile
Homepage plugin for displaying recent topics, latest members, popular threads, and similar elements
Created Topic Sort
Different homepage style for logged in vs logged out users
Force guests to a specific page?
Changing the default homepage to a specific category
Access to particular private categories only

Это игра меняет группу! :crazy_face:

Молодец! Достаточно мощный ТЧ…

На этапе PR внесено несколько доработок, направленных на решение следующих задач:

Также добавлена возможность управления мобильной главной страницей, если вы хотите, чтобы она отличалась (как описано здесь: Force Mobile Homepage).

Это значительно расширяет возможности плагина, надеемся, вам понравится.

6 лайков

Привет!! Это замечательно!! :slight_smile:
Большое спасибо, это действительно важно для моего случая (use-case 1).
У меня есть вопрос по поводу фразы «Пользователи, у которых указанная группа является основной, не смогут попасть на вашу «обычную» домашнюю страницу»: что вы имеете в виду под «активно предоставить им возможность сделать это»?
Также в рамках этой концепции было бы полезно отображать на главной странице категории в определённом порядке в зависимости от группы, к которой принадлежит пользователь. Например, показывать их категорию вверху, а все остальные — ниже. Как вы думаете, это возможно? (если это ещё не реализовано?).

[quote=“lisandro_iaffar, пост:4, тема:199623”]
Пользователи с указанной группой в качестве основной не смогут попасть на вашу «обычную» главную страницу». Что вы имеете в виду под «активно предоставить им способ сделать это»?[/quote]

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

Я не могу представить, как это могло бы работать (возможно, у меня плохое воображение :man_shrugging:). Сценарий использования, который я могу придумать, предполагает, что у пользователей будет установлена другая категория в качестве главной, если они состоят в определенной группе. Например, сайт о автомобилях мог бы позволить вам выбрать группу Ford в качестве вашей главной страницы.

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

1 лайк

Привет, Джей!
Спасибо за ответ :slight_smile:
Допустим, я хочу, чтобы наверху были закреплены разные категории в зависимости от группы, к которой принадлежит пользователь. То есть каждый пользователь будет видеть свою собственную «закреплённую» категорию. Я не хочу скрывать от пользователя другие категории, просто хочу сделать наиболее используемую им категорию максимально заметной и доступной прямо на главной странице (если это возможно!).
(конечно, я ничего не «требую», просто спрашиваю, возможно ли это с помощью доступных настроек или компонентов)

1 лайк

Привет @lisandro_iaffar

У меня был точно такой же случай использования, о котором я написал здесь: Showcased Categories - #18 by jrgong

В моём случае я настроил категорию клиента рекламодателя как главную страницу с помощью этого TC, но им показалось это запутанным, и они попросили меня снова убрать это. Поэтому я считаю, что TC «категории в витрине» с такой модификацией станет идеальным решением.

3 лайка

Привет @jrgong! :slight_smile:
Огромное спасибо, что указали мне на эту тему! И да! Это было бы просто отлично! Я перехожу туда, чтобы поддержать идею :muscle:
Ещё раз спасибо!

Я только что отправил обновление, касающееся нового preLoadStore, из-за чего при первой загрузке отображались неверные темы.

5 лайков

Привет, Джей, я заметил ошибку после последнего обновления Discourse:

1 лайк

Вы уверены, что это самая последняя версия на GitHub? (Не ваш форк и не статическая/локальная версия?) Я только что выполнил обновление, и всё работает. Также, глядя на код, api используется только в одном месте:

        const user = api.getCurrentUser();

и это находится внутри блока, где определяется api.

Это странно. Я всё равно убрал это из того экземпляра, так как оно было лишним. И после обновления в другом экземпляре всё работает нормально. Странно. Спасибо, что уделили время!

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

1 лайк

Я не тестировал, но не вижу причин, почему бы и нет. Обратите внимание, возможно, у меня не очень богатое воображение.

1 лайк

Я сейчас это тестирую, но у меня есть два замечания:

  1. Путь для анонимов у нас не работает — требуется ли тот же формат, что и для групповой карты?
  2. Было бы здорово, если бы существовала настройка по умолчанию, которая применялась бы ко всем.

1 лайк

Хм. Я думал, что проверял это на коммите списка.

Действительно. Думаю, тем, кому это было нужно, не пришлось бы переходить на неподдерживаемую домашнюю страницу.

Я постараюсь посмотреть на это завтра, хотя это может случиться только на следующей неделе.

1 лайк

Кстати, у меня это сработало, когда я вчера с этим работал (у меня там был tag/featured/)

У меня всё работает отлично. Нужен только относительный путь.

Но у меня была та же проблема, что и у вас, пока я не добавил компонент в тему! Вы это сделали?

Да, я тоже думал, что это нужно добавить. Вот оно:

2 лайка

Да, та же тема работает нормально при входе в систему, но не для анонимных пользователей. И на всякий случай: относительный URL должен начинаться с /? Спрашиваю, потому что Jammy использовал tag/featured/, а я — /c/artwork/8.

У меня это заработало — это была моя ошибка.

Отлично, спасибо! У меня пока не отображается как обновление, хотя должно?

1 лайк

У меня в форке это есть. Если хотите, можете установить его самостоятельно прямо отсюда, пока Джей не объединит изменения:

Работает как с “/”, так и без неё.

К слову

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

Подумав об этом — добавлена ли она в тему по умолчанию для сайта (анонимные пользователи используют её)? Я сам попадался на том, что добавлял компонент в свою тему «dev», но не в тему по умолчанию.

2 лайка

Да, я нашел ошибку — это было связано с этим :man_facepalming:

2 лайка