pfaffman
(Jay Pfaffman)
1
概述
安装并添加到活动主题后,此主题组件使您能够控制“主页”,使其不同于 Discourse 默认允许的一组页面,同时让不同的组拥有不同的“主页”(例如,组成员只关心或主要关心某个特定分类)。这可以针对所有用户、匿名用户(未登录用户)、移动用户,或根据用户的主要组进行设置。最初由 @pfaffman 开发。详见 https://meta.discourse.org/t/user-specific-discourse-home-page/160229。
使用场景:
- 您希望主页不是“常规”主页
- 您希望为匿名用户设置不同的主页
- 您希望为移动用户设置不同的主页
- 您有一群用户只对您实例中的某一小部分感兴趣。他们只想看到他们特定的分类。
- 临时将一群用户重定向到某个特殊活动或类似内容。
- 为不同组设置不同的落地页。
设置
自定义默认主页
允许您设置一个全局自定义主页。
匿名页面
此选项允许您为未登录用户指定一个页面。它将覆盖上述的全局设置。
移动主页
正如 Force Mobile Homepage 所述,此选项允许您为移动用户设置不同的主页。这将覆盖上述选择的选项。
组页面映射
此选项支持多个条目。每个条目的格式应为 group_name:path,其中 group_name 是组别名(不是组的“全名”),path 是期望的主页路径(例如,“/c/great-category/4”)。
请确保目标用户已将指定组设为他们的主要组,然后即可生效。如果主题设置或用户的主要组发生变更,需要重新加载才能使更改生效。
将指定组设为主要组的用户将无法访问您的“常规”主页,除非您确保他们有一种方式可以访问(例如使用原生侧边栏功能)。
已知问题 - 仅限相对 URL
遗憾的是,这也不包括 https://meta.discourse.org/t/page-publishing/151971。不过,您可以通过创建一个指向外部站点的重定向永久链接,并指向该永久链接来绕过此限制。
- @pfaffman 测试过在
/go-google 处创建一个永久链接,该链接重定向到 https://google.com,并使用类似 group-name:/go-google 的配置。
- 您可以通过管理员设置
/admin/customize/permalinks 创建永久链接。
42 个赞
nathank
(Nathan Kershaw)
3
我们在 PR 阶段进行了一些调整,解决了以下问题:
并且还增加了对移动主页的控制,如果您希望它有所不同(根据 https://meta.discourse.org/t/force-mobile-homepage/95705)。
这大大增强了它的功能,希望您喜欢。
6 个赞
你好!!这太棒了!! 
非常感谢,这对我(用例 1)的案例来说确实很重要。
我必须问一下,“具有指定组作为主要的用户将无法访问您的‘普通’主页”这句话,您说的“积极提供一种让他们这样做的途径”是什么意思?
另外,根据这个概念,在主页上根据用户所属的组显示类别的特定顺序也会很有用。例如,将他们的类别显示在顶部,而所有其他类别显示在下方。您认为这是否可行?(如果还没有的话?)。
pfaffman
(Jay Pfaffman)
5
这意味着站点设置中设置的任何主页都将被覆盖。因此,如果您希望用户能够访问它,那么您需要确保有一个链接可以让他们到达那里……以某种方式。
我无法想象那会如何运作(也许是我想象力不好
)。我想到的用例是让用户将不同的类别设置为他们的主页,如果他们属于某个组。例如,汽车网站可以让你选择福特组作为你的主页。
如果您希望为不同的组提供不同的内容,我认为您可以通过设置默认的静音类别来实现。
1 个赞
嗨 Jay!
感谢您的回复 
假设我想根据用户所属的组,将不同的类别“固定”在顶部。我的意思是,每个不同的用户都会看到一个不同的“固定”类别。我不想向用户隐藏其他类别,只是想让他们在主页上(如果可能的话!)轻松看到并随时可用他们最常使用的类别。
(当然,我在这里不是“强求”任何东西,只是询问是否可以使用现有的设置/组件来实现)
1 个赞
jrgong
(jrgong)
7
嘿 @lisandro_iaffar
我有一个完全相同的用例,我在这里发布了:Showcased Categories - #18 by jrgong
在我的例子中,我设置了广告客户的客户端类别作为主页,使用了这个 TC,但他们觉得很困惑,并要求我再次删除它。因此,我认为带有此类修改的展示类别 TC 将是完美的解决方案。
3 个赞
你好 @jrgong! 
非常感谢你向我介绍这个话题!是的!那将是完美的!我将支持这个想法 
再次感谢!
pfaffman
(Jay Pfaffman)
9
我刚刚提交了一个更新,解决了 preLoadStore 导致首次加载时显示错误主题的问题。
5 个赞
nathank
(Nathan Kershaw)
10
嘿 Jay,我注意到上次 Discourse 更新后出现了一个错误:
1 个赞
pfaffman
(Jay Pfaffman)
11
您确定那是 GitHub 上最新的版本吗?(不是您的分支或静态/本地版本?)我刚刚运行了一次升级,它正在工作。另外,查看代码,api 只在一个地方使用:
const user = api.getCurrentUser();
而这在一个定义了 api 的块内。
nathank
(Nathan Kershaw)
12
这很奇怪。我已将其从该实例中删除,因为它已有多余。它似乎在另一个实例中更新后运行正常。奇怪。感谢您的查看!
您知道它如何与侧边栏交互吗?我需要尝试一下,因为它看起来解决了返回论坛主页的路由问题。
1 个赞
pfaffman
(Jay Pfaffman)
13
我还没有测试过,但我无法想象为什么不行。请注意,我的想象力可能不是很好。
1 个赞
pfaffman
(Jay Pfaffman)
15
嗯。我以为我在列表提交上测试过它。
确实如此。我猜那些需要它的人不需要更改为不支持的主页。
我明天会试着看看,不过可能要到下周了。
1 个赞
供参考,昨天我玩的时候它对我来说是有效的(我里面有 tag/featured/)
nathank
(Nathan Kershaw)
17
对我来说,它工作正常。它只需要相对路径。
但我遇到了和你一样的问题,直到我将组件添加到主题中!你做到了吗?
是的,我确实认为需要添加这个。在这里:
2 个赞
bartv
(Bart )
18
是的,登录时同一个主题可以正常工作,只是匿名用户不行。为了确保万无一失:相对 URL 需要以 / 开头吗?我问是因为 Jammy 使用了 tag/featured/ 而我使用的是 /c/artwork/8。
我解决了这个问题——是我的错。
太好了,谢谢!但它还没有显示为更新——应该吗?
1 个赞
nathank
(Nathan Kershaw)
19
它在我的 fork 中。如果你愿意,可以先直接从这里安装它,直到 Jay 合并它:
有或没有 / 都可以
顺便说一句
你的配置方式将无法正常工作,因为用户不能将任何信任级别组作为其主要组。
仔细想想——它是否已添加到站点的默认主题(匿名用户使用此主题)?我曾因为将组件添加到我的“开发”主题而不是默认主题而遇到麻烦。
2 个赞