新增“默认主页”网站设置

目前,要更改 Discourse 站点的首页,您需要配置站点设置 top menu(顶部菜单),并将您想要的首页作为列表中的第一个选项。对于新管理员来说,这种行为相当不直观。

今天,我们合并了一项更改,添加了一个新的 default homepage(默认首页)站点设置,以使这一过程更加清晰和简便。

现有站点无需执行任何操作,因为此新设置的默认值为 first item in top menu(顶部菜单中的第一项),这与我们一直以来的功能相同。新设置中也保留了相同的选项。如果您选择一个仅对登录用户可用的首页(例如 new),我们仍将回退到匿名用户可用的第一个 top menu 项。

此新设置解锁的一项更改是,您现在可以拥有一个未出现在顶部菜单中的首页。例如,您可以将 categories(分类)设置为首页,并从 top menu 设置中移除它,因为所有分类的链接也可在侧边栏中找到。

未来我们可能会添加一些新的首页选项,敬请期待更多更新!

26 个赞

Kris,这是一个非常棒的补充!:clap:

由于我们即将通过 custom-homepage 插件接口推出新的首页,我很好奇这个新设置是否会在插件或主题组件引入自定义首页时将其包含在内。因为我计划更新用户偏好设置,将首页设置重置为默认值 -1

那么,顺带问一下,这个新设置是否也会更新用户偏好设置中的首页选项?

最后,如果“默认首页”设置为“顶部菜单中的第一项”,并且通过 api.addNavigationBarItem() 添加了一个自定义链接并置于首位,它实际上会被视为第一项吗?

4 个赞

不,情况仍然相同。用于自定义主页的主题修饰符会完全覆盖站点设置。这有点复杂,因为如果站点有多个可用主题,而其中一个没有自定义主页,我们就必须处理回退逻辑。这是我们需要考虑的问题。

还没有……不过选项仍然与顶部菜单相同。但有一个变化是,default(默认)现在在用户偏好设置中始终可用(以前是有条件的)。用户偏好设置中的“默认”将遵循站点设置。

这里也是“尚未实现”——除了主题中的自定义主页外,Discourse 站点的主页仍然有各种要求,必须是主题列表页面(或 /categories),而 api.addNavigationBarItem() 的要求要宽松得多。

3 个赞

谢谢 Kris。我对此投入了很多精力,也很想知道它接下来的发展情况。

我可以分享的一个观察是:当主题组件引入自定义主页时,那些设置了个性化主页的用户将永远看不到它。

与顶部菜单项不同,自定义主页没有路径,因此我无法为其创建自定义菜单项。

这正是尽管我觉得这是一个极端的决定,我还是计划重置用户偏好以使用默认值 -1 的原因。据我所知,这将是我让所有用户都能看到新主页的唯一选择。之后,他们仍然可以在自己的偏好设置中进行个性化调整。

2 个赞

我认为路径是 /custom

2 个赞

今日学到的。谢谢 @Moin,这确实有效。

不过,/custom 并不是我首选的主页路径 :))

你可以使用 permalinks 来实现类似 /home 的路径

是的,谢谢,但这会“重定向”请求,最终仍然会落在 /custom

2 个赞

我希望能够让匿名用户访问自定义首页,而让已登录用户访问最新帖子页面。或者至少提供这样的选项。

使用场景是:让 Discourse 为普通访客提供一个量身定制的单一首页/着陆页,同时让常规用户无缝进入完整的论坛体验。

虽然通常的做法是拥有一个独立的网站并将 Discourse 放在子域名下,但这会增加大量的管理和成本开销。我希望简化流程,将所有内容整合到一个实例中。

目前使用新设置可以实现这一点吗?

1 个赞

是的,这是一个有趣的情况,但目前无法通过站点设置来实现。

想到几个替代方案:

  • 为两者构建自定义首页,并根据用户检查进行分支(显然比直接使用现成方案需要更多的维护工作)

  • “默认首页”的用户界面首选项会覆盖自定义主题首页,因此进行一些利用该功能的定制可能会有效……例如:

    import { setDefaultHomepage } from "discourse/lib/utilities";
    
    export default {
     name: "force-homepage",
     after: "url-redirects",
    
     initialize(container) {
       if (container.lookup("service:current-user")) {
         setDefaultHomepage("latest");
       }
     },
    };
    

    然后你可以通过 CSS 隐藏该用户首选项

1 个赞

谢谢 Kris!

我有点犹豫是否要放弃让用户自定义首页的功能。不过话说回来,真正这么做的人其实寥寥无几。

这真是一个好消息!

那么在这种情况下,我们久经考验的 Custom Homepage for Groups 主题组件可能就能派上用场了:

不过,它可能需要稍作调整,才能与(较新的)核心自定义首页功能兼容。

2 个赞