如何正确地扩展 categories 路由并过滤主题?

你好,

设置(作为插件和主题实现):
我们为每个类别设置了多个标签页,每个标签页指向不同的目的地。

  • “关于”链接到一个特定的自动生成的主题,该主题在主题列表中不可见。(/t/topic-slug/20)
  • “主题”是“常规”主题的列表,即通常的行为。(/c/parent-slug/child-slug/11)
  • “活动”是包含活动邀请的主题列表(使用 discourse-calendar 插件)。这些主题要么被标记为"event",要么 archetype=“event”,或者两者兼有。(/c/parent-slug/child-slug/11?archetype=event)
  • “成员”链接到分配给该特定类别的自动生成的群组页面。(/g/group-slug)

存在的问题

  1. 主要问题是我们将有多种类型的主题。目前我们有“常规”和“活动”两种,但出于业务原因,我们计划增加更多类型。我在“使用标签”和“使用 Topic.archetype"之间来回权衡,以区分这些类型。但无论采用哪种方式,我们都希望能够根据对应的标签过滤特定类型的主题,并使列表行为保持正常。也就是说,滚动时的主题自动加载功能也应按主题类型进行过滤,并且宣布新主题创建的横幅提示应仅在你查看对应主题类型(常规或活动)的标签页时出现。(例如,“查看 1 个新增或更新的活动”应仅在你查看“活动”标签页时出现)

  2. 次要问题是我们希望扩展类别的 URL,以使标签页的 URL 保持一致。例如:

    • “关于”链接到 /c/parent-slug/child-slug/11/about
    • “主题”链接到 /c/parent-slug/child-slug/11/regular
    • “活动”链接到 /c/parent-slug/child-slug/11/events
    • “成员”链接到 /c/parent-slug/child-slug/11/members

我们曾寻找过类似功能的插件示例,但 Favorites 插件已失效,而 自定义顶部导航链接 主题组件仅适用于顶级链接。

是否存在一种正确的方法来创建自定义的类别级路由,类似于 /c/category-slug/11/l/latest/c/category-slug/11/l/new/c/category-slug/11/l/top?我考虑使用标签来过滤不同类型的主题,但我发现当按标签过滤时,“新增或更新的主题”横幅不会显示。那么,使用 archetypes 是否是更好的选择?

我知道这是一篇较长的帖子,包含多个问题,但任何建议都将不胜感激。

1 个赞

我已将你的话题移至 Dev,建议修改标题,使其更像一个问题,让他人知道你需要一些解答。例如,可以改为“是否有正确的……?”或“正确的……是什么?”

目前,标题读起来像是在告诉社区正确的做法。

2 个赞